5

Używam ASP.NET EF Core z MySQL (Pomelo.EntityFrameworkCore.MySql driver). Przyczyna takim kontekście trzeba niektóre linie specyficznej konfiguracji którym domyślny DbContext z MSSQL nie ma, I stworzył MySqlContext:Wyklucz DbContext z migracji, aby uniknąć parametru kontekstowego

public class MySqlContext : DbContext { 
    string connectionString; 
    // ... 
} 

Więc wszyscy moi DbContexts są dziedziczone z tych zajęć:

public class MyDbContext: MySqlContext { 
    public DbSet<MyModel> MyModels{ get; set; } 
    // ... 
} 

W moim projekcie mam obecnie jeden kontekst (DbContext), który zawiera DbSets. I MySqlContext, który nie jest rzeczywistym kontekstem, jak ten, ponieważ nie ma DbSets i działa tylko jako opakowanie dla konfiguracji MySQL, dzięki czemu mogę lepiej wykorzystać je ponownie.

Ale wydaje się, że migracje będą widzieć ich jako dwóch różnych kontekstach, ponieważ kiedy dodać migracji przy użyciu polecenia Add-Migration Test mam błąd

Niejeden DbContext został znaleziony. Określ, którego użyć. Użyj parametru "-Context" dla poleceń PowerShell i parametru "--context" dla poleceń dotnet.

Tak więc przy każdej migracji muszę dodać -Context MyContext do polecenia. Chciałbym tego uniknąć, ponieważ, jak powiedziałem, drugi kontekst MySql nie jest rzeczywistym kontekstem, który zawiera modele i migracje. Czy istnieje sposób, aby powiedzieć to narzędzie migracji? Potrzebuję czegoś takiego jak atrybut [NotMapped] dla modeli EF, który mówi EF: Nie przechowuj tej właściwości w bazie danych. W ten sposób muszę powiedzieć EF: Ignoruj ​​klasę MySqlContext, ponieważ nie wymagają one migracji.

Odpowiedz

5

Producent klasa bazowa streszczenie:

public abstract class MySqlContext : DbContext { 
    string connectionString; 
    // ... 
} 
+0

Cholera, tak łatwo i logicznie później, dzięki! Tutaj mówimy "Czasami nie możesz zobaczyć drewna dla drzew": D – Lion

2

Komenda Use-DbContext MyContext ustawi MyContext jako kontekst domyślny używać do sesji PowerShell. Jest to kolejny sposób uniknięcia konieczności określenia za każdym razem -Context.