tl;dr
I am updating a website from ASP.NET Framework (VB) and ADO.NET to ASP.NET Core (C#) and EF Core
- EF Core
How can I join tables from existing separate databases using EF Core?
- The tables already exist, the fields being joined on are not primary keys, and they don't follow a naming convention.
- Same DbSets in multiple contexts?
- Try to include multiple databases in one context by qualifying table names (.dbo)?
- Using views to select cross-database?
- Other ideas I'm not aware of?
- Application
Which approach would scale well for this large of application?
- Blazor Server - this is what I’ve spent the most time on, but ran into plenty of "second operation on this context" errors. Is this a limitation of Blazor Server or do I just need to understand it and handle it better?
- Blazor WASM, MVC, Razor pages? Almost all users are on Chromebooks
- Based on the below info, are there any obvious advantages or is it just developer preference?
Background
I am starting the task of upgrading a very large internal staff website to a more modern design. Current website info:
- ASP.NET Framework 4.8
- Over 300 .aspx pages (VB)
- SQL Server
- Around 20 different databases
- Around 200 tables amongst those databases
- Each database has its own Stored Procedures, Functions, and Views
The website user count is in the 1000 range, with on average 100-200 active users at a time.
Almost all users connect to the website via Chromebooks.
The primary goal is responsiveness. This website has been around for a long time, and was designed long before Bootstrap, etc.
I figured if I'm going to rewrite the .master pages and all the .aspx pages, I should also make the move to ASP.NET Core and EF Core (and C# of course, it's still using VB)
Problem
Where I keep getting stuck is designing the database models. Entity Framework is a new concept for me. With the size of the existing SQL database, this will obviously be a database first approach.
I have already spent a few weeks trying Blazor Server, MVC and Razor pages. Once I got hung up on something I’d move onto the next one and try that.
Whichever I go with, it is going to be a lot of work upfront to get the foundation in place. I realize that, but I would prefer to select the best scalable approach before spending all the time to upgrade.