Moja typowa struktura aplikacji sieci web .NET 4.5X ma co najmniej 3 poziomy: projekt internetowy (aplikacja internetowa .NET), projekt logiczny domeny/biznesu (a biblioteka klasy) i projekt dostępu do danych (biblioteka klasy). Projekt WWW odwołuje się do warstwy biznesowej, a warstwa biznesowa odwołuje się do warstwy dostępu do danych.Tworzenie podstawowej aplikacji dotnet dla 3-warstw z warstwą dostępu do danych
Podoba mi się to podejście, ponieważ mój projekt internetowy nie ma odniesienia do projektu dostępu do danych (musi najpierw przejść przez domenę/warstwę logiki biznesowej). Mój projekt WWW nie powinien mieć żadnego dostępu do klas kontekstu lub repozytorium.
W 3-warstwowej aplikacji 4.5.X.net deklaruję ciąg połączenia w pliku web.config i nazwę DbContext jako atrybutu nazwy ciągu połączenia.
W nowym paradygmacie Dotnet Core każdy przykład widzę ma DbContext skonfigurowany w Startup.cs tak:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<MyApplicationContext>("myconnectionstring or reference to it");
}
dając starcie konkretną klasę używaną w dbcontext, muszę odwołać projekt dostępu do danych, w którym zdefiniowano element dbcontext. Wolałbym tylko odnosić się do środkowej warstwy i unikać odniesienia do DAL.
Moje pytanie brzmi: w jaki sposób należy uporządkować strukturę rozwiązania, aby uniknąć dodawania odwołania z mojego projektu internetowego do mojego projektu dostępu do danych?
Czy mogę użyć właściwości appsettings.json?
Czy mogę dodać moją konfigurację Entity w inny sposób?
Czy jest coś ważnego, czego mi brakuje na temat rdzenia sieciowego?
Z góry dziękuję.
Ta odpowiedź może być przydatna, ponieważ usuwa odniesienie EF w warstwie internetowej http://stackoverflow.com/a/38360204/1544886 –