EF4 Code First创建新表

时间:2011-08-13 01:15:47

标签: entity-framework-4 ef-code-first

有没有办法在我的Code First配置中添加新实体时,表会自动添加,所以我不必担心用新表更新我的数据库?

2 个答案:

答案 0 :(得分:2)

你可以添加

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<YourDbContext>());

在你的申请开始。如果您修改了配置,它将为您重新创建数据库。 如果您不想删除并创建数据库(要进行增量开发),可以使用SqlMigrationshttp://www.hanselman.com/blog/EntityFrameworkCodeFirstMigrationsAlphaNuGetPackageOfTheWeek10.aspx

答案 1 :(得分:0)

来自:http://blogs.msdn.com/b/adonet/archive/2010/12/06/ef-feature-ctp5-code-first-walkthrough.aspx

  

设置初始化策略

     

在下一节中,我们将开始更改模型,这反过来意味着数据库模式也需要更改。目前,没有“开箱即用”的解决方案来改进您现有的架构。我们目前正在开展数据库演变,并在最近的设计博客文章中提供了我们前进方向的样本。

     

然而,有机会在第一次在AppDomain中使用上下文时运行一些自定义逻辑来初始化数据库。如果要为测试运行插入种子数据,这很方便,但如果模型已更改,则重新创建数据库也很有用。在CTP5中,我们提供了一些您可以插入的策略,但您也可以编写自定义策略。

     

在Program.cs

的顶部为System.Data.Entity.Database添加using语句
using System.Data.Entity.Database;
     

对于演练,我们只想在模型发生变化时删除并重新创建数据库,因此在我的Program类的Main方法的顶部我添加了以下代码

DbDatabase.SetInitializer<ProductContext>(
    new DropCreateDatabaseIfModelChanges<ProductContext>());