我想实现自定义数据库初始化策略,以便我可以:
- 如果不存在则生成数据库
- 如果模型更改仅创建新表
- 如果模型更改,则仅创建新字段,而不会删除表并丢失数据。
提前致谢
最佳答案
您需要实现 IDatabaseInitializer界面。
例如
public class MyInitializer : IDatabaseInitializer<MyDbContext>
{
public void InitializeDatabase(MyDbContext context)
{
//your logic here
}
}
然后在应用程序启动时设置初始化程序
Database.SetInitializer<ProductCatalog>(new MyInitializer());
这是一个example
您必须手动执行命令来更改数据库。
context.ObjectContext.ExecuteStoreCommand("ALTER TABLE dbo.MyTable ADD NewColumn VARCHAR(20) NULL");
您可以使用类似 SQL Compare 的工具脚本更改。
关于entity-framework-4.1 - Entity Framework 4.1 自定义数据库初始化器策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720363/