La mia tipica struttura di applicazione Web .NET 4.5X ha un minimo di 3 livelli: un progetto Web (un'applicazione Web .NET), un progetto di dominio/business logic (a libreria di classi) e un progetto di accesso ai dati (una libreria di classi). Il progetto Web fa riferimento al livello aziendale e il livello aziendale fa riferimento al livello di accesso ai dati.Organizzazione di un'app dotnet core per 3 livelli con livello di accesso ai dati
Mi piace questo approccio poiché il mio progetto web non ha un riferimento al progetto di accesso ai dati (deve prima passare attraverso il livello dominio/business logic). Il mio progetto web non dovrebbe avere alcun accesso alle classi di contesto o repository.
Nell'app .net 4.5.X a 3 livelli, dichiaro la stringa di connessione nel file web.config e fornire il nome di DbContext come attributo nome della stringa di connessione.
Nel nuovo paradigma Dotnet core, tutti gli esempi che vedo ha la DbContext configurato nel Startup.cs come questo:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<MyApplicationContext>("myconnectionstring or reference to it");
}
Dando l'avvio una classe concreta da utilizzare per il DbContext, devo fare riferimento il progetto di accesso ai dati, in cui è definito il dbcontext. Preferirei fare riferimento solo al livello intermedio ed evitare il riferimento al DAL.
La mia domanda è: come dovrei organizzare la mia struttura di soluzione in modo da evitare di aggiungere un riferimento dal mio progetto web al mio progetto di accesso ai dati?
Posso utilizzare una proprietà appsettings.json?
Posso aggiungere la mia configurazione di Entity in un altro modo?
C'è qualcosa di importante che mi manca nel core del punto rete?
Grazie in anticipo.
Questa risposta può essere utile, rimuove il riferimento EF nel livello Web http://stackoverflow.com/a/38360204/1544886 –