Мне нужно создать схемы во время выполнения и скопировать туда существующие таблицы. DbContext:
public class TenantContext : DbContext
{
public TenantContext(string schemaName)
{
this.SchemaName = schemaName;
}
public string SchemaName { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder
.UseSqlServer("connString");
}
public virtual DbSet<TestEntity> TestEntities { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<TestEntity>().ToTable("TestEntity", SchemaName);
}
}
Создание схемы:
public void CreateSchema(SchemaRequest req)
{
TenantContext context = new TenantContext(req.Name);
RelationalDatabaseCreator creator =
(RelationalDatabaseCreator) context.Database.GetService<IRelationalDatabaseCreator>();
creator.CreateTables();
}
Когда я пытался проверить его, я создал "schema1.TestEntity", а когда я попытался создать "schema2.TestEntity", он дал мне System.Data.SqlClient.SqlException: 'There is already an object named 'TestEntity' in the database.'
Тем не менее, когда я перезапустил приложение и снова попытался создать "schema2.TestEntity", он работал нормально, но выдал ту же ошибку при попытке создать третью схему. Что я делаю не так?