有没有办法在我的Code First配置中添加新实体时,表会自动添加,所以我不必担心用新表更新我的数据库?
答案 0 :(得分:2)
你可以添加
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<YourDbContext>());
在你的申请开始。如果您修改了配置,它将为您重新创建数据库。
如果您不想删除并创建数据库(要进行增量开发),可以使用SqlMigrations
。 http://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>());