sto cercando di utilizzare le migrazioni, ma ho il seguente problema
$ dotnet ef migrations add InitialMigration
No DbContext was found in assembly 'VirtualStore.Data'. Ensure that you're using the correct assembly and that the type is neither abstract nor generic.
Qui, la mia classe Context
using Microsoft.EntityFrameworkCore;
using VirtualStore.Mapping.Mapping;
namespace VirtualStore.Data
{
public class Context<T> : DbContext where T : Entity
{
public DbSet<T> Entity { get; set; }
public Context()
{
Database.EnsureCreated();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data Source=DESKTOP-3UEM3PC;Initial Catalog=VIRTUALSTORE;Integrated Security=SSPI;");
base.OnConfiguring(optionsBuilder);
}
}
}
E la mia soluzione
Qualcuno sa cosa posso fare, usare le Migrazioni con questa Architettura?
Non vuoi che il tuo "contesto" DbContext sia generico. Rendi "Contesto" non generico e includi proprietà DbSet separate per ciascun tipo di entità che stai mappando al database.
https://docs.microsoft.com/en-us/ef/core/modeling/included-types
Perché stai creando DbContext generico? Dall'esame del tuo codice ti stai limitando a un'entità per creazione di DbContext. Ad esempio, immagina di dover creare Sale e i relativi SaleItem. Dovresti istanziare due oggetti DbContext invece di uno ... e questo apre tutta una serie di problemi.
Il mio consiglio non è di creare DbContext generico ma di rendere generico DbSet. Esistono diversi modi per farlo, ma ecco un esempio che ho fatto di recente.
Si noti inoltre che in questa soluzione ho dovuto utilizzare lo switch project e source di progetto:
dotnet ef migrations add InitialMigration -p ..\Freelanceme.Data -s ..\Freelanceme.WebApi