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.
Cholera, tak łatwo i logicznie później, dzięki! Tutaj mówimy "Czasami nie możesz zobaczyć drewna dla drzew": D – Lion