entity-framework-4.1 - Entity Framework 4.1 自定义数据库初始化器策略

标签 entity-framework-4.1 ef-code-first code-first

我想实现自定义数据库初始化策略,以便我可以:

  • 如果不存在则生成数据库
  • 如果模型更改仅创建新表
  • 如果模型更改,则仅创建新字段,而不会删除表并丢失数据。

提前致谢

最佳答案

您需要实现 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/

相关文章:

sql-server - 基于外键 EF 的主键

c# - 如何使用 AddOrUpdate 的多个条件来确定数据库是否应该添加模型或更新?

entity-framework - 如何联接多个表?

c# - Entity Framework Code First - 两个名称相同但 namespace 不同的实体

c# - Entity Framework 4.1 幽灵列

c# - EF6 忽略实体类中的 [Table] 和 [Column]

linq-to-sql - 与LINQ-to-SQL相比, Entity Framework 4(CTP 5)不明智地查询

entity-framework - 如何在不使用导航属性的情况下在 codefirst 中设置外键关系?

asp.net-mvc-3 - Entity Framework |代码优先 |从 CultureInfo.Name 映射子属性

entity-framework - Entity Framework 日期时间列 - GetDate() 值插入