Я использую ASP.NET EF Core с MySQL (драйвер Pomelo.EntityFrameworkCore.MySql). Причина такого контекста нужно несколько строк конкретной конфигурации, которая DbContext по умолчанию с MSSQL не имеет, я создал MySqlContext:Исключить DbContext из миграций во избежание контекста-параметра
public class MySqlContext : DbContext {
string connectionString;
// ...
}
Так что все мои DbContexts унаследованы от тех класса:
public class MyDbContext: MySqlContext {
public DbSet<MyModel> MyModels{ get; set; }
// ...
}
В моем проекте у меня есть один контекст (DbContext), который содержит DbSets. И MySqlContext, который не является настоящим контекстом, так как он не имеет DbSets и действует только как оболочка для конфигурации MySQL, поэтому я могу лучше их повторно использовать.
Но, похоже, что миграция будет видеть их как два разных контекстах, потому что, когда я добавляю миграции с помощью команды Add-Migration Test
я получил ошибку
Более один DbContext был найден. Укажите, какой из них использовать. Используйте параметр «-Context» для команд PowerShell и параметр «--context» для команд dotnet.
Поэтому при каждой миграции я должен добавить команду -Context MyContext
. Я хотел бы избежать этого, потому что, как я уже сказал, второй MySqlContext не является реальным контекстом, который содержит модели и миграции. Есть ли способ сообщить об этом инструменту миграции? Мне нужно что-то вроде атрибута [NotMapped] для моделей EF, который сообщает EF: Dont сохраняет это свойство в базе данных. Как и мне, мне нужно сказать EF: Игнорируйте класс MySqlContext, потому что им не нужны миграции.
Черт, так легко и логично, спасибо! Здесь мы говорим: «Иногда вы не можете увидеть лес для деревьев»: D – Lion