我必须用代码创建一个表。问题是,不允许我使用迁移。应用程序应在启动时检查表是否存在,并按需添加它们。
我有一个DbContext
的非常基本的实现,该实现是通过调用此方法创建的:
public static ConfigurationDbContext CreateRemoteContext(string nameOrConnectionString)
{
var context = new ConfigurationDbContext(nameOrConnectionString);
context.Configuration.ProxyCreationEnabled = false;
context.Configuration.LazyLoadingEnabled = false;
context.Configuration.AutoDetectChangesEnabled = false;
return context;
}
还有一个配置容器,该容器将传递到应用程序的其余部分。它包含每个表的数组,它们的加载方式如下:
using (var dbContext = ConfigurationDbContext.CreateRemoteContext(App.Database.DbConnectionName))
{
var result = new ConfigurationContainer
{
ExistingTableEntities = dbContext.ExistingEntities.ToArray(),
...
NotExistingTableEntities = dbContext.NotExistingTableEntities.ToArray()
};
...
}
在这里,所有实体都被加载到配置容器中。尝试访问不存在的表时,可预见会引发异常。
如何检查表是否存在并按需创建而不进行迁移?