数据库更改的DbContext

时间:2012-03-30 05:31:44

标签: database entity-framework dbcontext

我现在正在使用Entity Framework 4.3 DbContext来生成数据库实体,我的问题是当我更改数据库时,如何确保自动生成的代码更新? EF存储数据库规则的位置,例如允许从No到Yes的null。当我使用 .EDMX 文件中的从数据库更新模型函数时,似乎不会更新表的allow null规则。我该如何解决数据库更改问题。存储所有这些规则的代码在哪里。

错误消息:

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

但是当我删除所有EF自动生成的文件并重新生成它时,似乎规则已更新。但我认为这不是开发期间解决问题的好方法。

1 个答案:

答案 0 :(得分:1)

  

当我使用.EDMX文件中的“从数据库更新模型”功能时,它   似乎没有更新表的allow null规则。

这是正确的行为。 EDMX文件有三个部分:

  • 数据库定义(仅在模型浏览器中可见)
  • 类定义(这是你在设计师中看到的)
  • 定义之间的映射(这是您在映射详细信息中看到的)

当您使用数据库更新时,设计人员将完全替换数据库定义,并将新表或列添加到映射和类定义。它永远不会尝试删除或更改任何东西。原因是类定义是可定制的。如果您进行了更改,则不希望设计师触摸它们。从数据库更新只有实际状态 - 它不知道您所做的更改以及修改数据库导致的更改,因此它只是使用更好的方式 - 不要修改任何内容并让您纠正不一致。