У меня проблема с Entity Framework и DBContext с несколькими именами схем. Он работает только, если я удалю таблицу dbo .__ MigrationHistory или конкретную запись.Entity Framework Многопользовательская и динамическая схема
Сначала мой DatabaseContext:
public class AppTenantDatabaseContext : DbContext, IServiceStatusDatabaseContext, IDbModelCacheKeyProvider
{
public DbSet<Container> Items{ get; set; }
protected string _prefix;
public AppTenantDatabaseContext(string prefix, string connectionStringName) : base(connectionStringName)
{
this.Configuration.LazyLoadingEnabled = false;
_prefix = prefix;
System.Data.Entity.Database.SetInitializer(new CreateDatabaseIfNotExists<AppTenantDatabaseContext>());
}
public AppTenantDatabaseContext(string prefix) : base("AppFramework")
{
this.Configuration.LazyLoadingEnabled = false;
_prefix = prefix;
System.Data.Entity.Database.SetInitializer(new CreateDatabaseIfNotExists<AppTenantDatabaseContext>());
}
public AppTenantDatabaseContext() : this(string.Empty) { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(this._prefix);
modelBuilder.Entity<Container>().ToTable("Container", schemaName: _prefix);
base.OnModelCreating(modelBuilder);
}
public string CacheKey
{
get { return this._prefix; }
}
}
Если я запустить DbContext запись в таблице __MigrationHistory добавляется для ContextKey от полного имени класса с моделью, которая содержит схему. Если я хочу создать таблицы для другой схемы, код запускается в исключение, потому что модели разные. Это понятно.
Теперь мой вопрос: Как мне его достичь, чтобы работать с таблицей истории миграции, не удаляя ее?
В моем мнении это может сработать, если либо таблица __MigrationHistory будет создана для имени схемы foreach вместо «dbo», либо если таблица __MigrationHistory содержит имя для имени foreach в сочетании с именем класса. Как я могу это сделать?
Благодарим за помощь!
Есть ли способ получить эту работу с миграциями? – Basti
не знаю. – tschmit007