Ciao, ho appena creato un nuovo progetto usando ASP.NET Core 1.0 e Entity Framework Core 1.0. Questa è la mia struttura di progetto:
Vorrei evitare di aggiungere un referenece al livello DataAccess perché tutte le chiamate devono andare a gettare il livello manager per mantenere le cose disaccoppiate e ritengo che il livello WebApi non dovrebbe avere alcuna conoscenza di quale tecnologia DataAccess sto usando. Se esiste un modo per non aggiungere un riferimento a Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
sapere Ho provato ad aggiungerlo in Commercify.DataAccess.Catalog ma ho ricevuto un errore che ha dichiarato che non è classe supportata nelle librerie.
Ho creato in Commercify.DataAccess.Catalog il seguente dbContext:
public class CatalogDbContext: DbContext
{
public CatalogDbContext(DbContextOptions<CatalogDbContext> options)
: base(options)
{ }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(local)\SQLEXPRESS;Database=Commercify;Trusted_Connection=True;");
}
public DbSet<CategoryEntity> Categories { get; set; }
}
Ora voglio essere in grado di aggiungere una migrazione a tale scopo che ho installato: in Commercify.WebApi i seguenti assembly:
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
...
"Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
Quello che voglio ora è aggiungere una migrazione e per farlo ho eseguito quanto segue:
dotnet ef migrations add Init
E ho ricevuto il seguente errore:
Nessun DbContext è stato trovato nell'assembly "Commercify.WebApi". Assicurati di utilizzare l'assembly corretto e che il tipo non sia né astratto né generico.
Mi sono ricordato che quando è stato utilizzato dnx, è possibile aggiungere un comando -p e puntare ef al progetto in cui esiste il dbContext, quindi ho provato ad eseguire questo
dotnet ef migrations add Init -p Commercify.DataAccess.Catalog
E ho ricevuto il seguente errore:
Opzione '-p' non riconosciuta
Come posso eseguire uno strumento di migrazione per un dbContext che non è nel progetto di avvio?
Per quanto ne so, l'unico modo per farlo in RTM è eseguire le migrazioni dal progetto che contiene il contesto. Questo articolo delinea il processo per farlo funzionare. Speriamo che Microsoft risolverà questo presto.
http://benjii.me/2016/06/entity-framework-core-migrations-for-class-library-projects/