在代码第一个实体框架中手动编辑数据库

我一直在用MVC 3试用EF 4.1( 代码优先 )。我正在考虑应用程序何时需要更改。 我测试了几个场景。 我喜欢在模型(我的POCO)改变时手动编辑数据库的想法。

更改模型时发生ASP.NET错误:

“自从创建数据库以来,支持”CTCMContext“上下文的模型已经发生了变化,无论是手动删除/更新数据库......”

现在,它说我可以“ 手动更新数据库 ”,但是我仍然得到相同的错误 。 我错过了什么!!?!

编辑

这是否与EF生成的模型哈希有关?


我也遇到过一些困难。 我发现,当您让EF为您创建数据库时,会创建一个名为dbo.EdmMetadata的表,这是EF跟踪模型状态的地方/方式。 我发现如果你在数据库初始创建后删除了这个表,你将会把它放到“手动模式”,你现在可以手动在你的数据库中添加/删除列和表等等,EF不会抛出你的错误正在看。

但是,如果要在对模型进行更改时继续让EF更新数据库,则需要创建并调用从DropCreateDatabaseIfModelChanges或DropCreateDatabaseAlways继承的ContextInitializer类,具体取决于您希望发生的行为。


使用新的字段名称更改类,删除表格“EdmMetaData”,然后重新编译您的应用程序。

您将负责修改视图上的字段名称。

这个对我有用。


正如我所看到的,实际上没有任何内置EF的方法用于代码优先的数据演变。

对于我最初的问题,答案在于删除模式生成/验证。 只有这样,手动编辑代码和数据库才能工作。

更新: EF 5.0现在支持迁移

链接地址: http://www.djcxy.com/p/90209.html

上一篇: Manually editing database in code first entity framework

下一篇: Composite Key with EF 4.1 Code First