我在实体框架V4.1中使用代码优先模式。我遇到的一件看起来很奇怪的事情是,每当您在模型中进行任何更改时,都会删除数据库并创建新的数据库。这非常麻烦,因为每次删除和重新创建数据库都不是理想的解决方案。我所有的测试数据和所有内容都丢失了。我知道有一个名为Seed的方法,您可以将测试数据记录插入其中。但是,可能只有几百个测试记录,并且不可能将每个记录都放入种子方法中。除此之外,还有其他选择吗?我根本不会使用代码优先,但是必须在项目中使用它。

最佳答案

没有,目前没有其他方法,EF本身可能永远不会支持除drop / recreate之后的任何功能。 ADO.NET团队选择的方式是使用名为Migrations的单独的数据库升级工具。迁移目前仅以CTP形式提供,它们不适合实际使用,但适合测试并向EF团队收集反馈。

作为解决方法,您可以使用外部数据填充脚本并从种子中调用它-维护起来会容易得多。

关于c# - DropCreateDatabaseIfModelChanges在Database.SetInitializer中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7304688/

10-11 22:03