Sla*_*uma 16 entity-framework entity-model
我在表结构中做了一些更改,尤其是SQL Server数据库中表之间的关系.现在我想基于这个新的数据库结构更新我的实体模型.
右键单击edmx文件,我找到"从数据库更新模型"选项.但是当我这样做时,我得到了50%的更新:新的列出现在实体类中,但我对模型中仍然存在的许多导航属性感到困惑,尽管相应的外键关系不再存在数据库.(编辑:尽管数据库中的列已被删除,但模型类中的成员也不会被删除.)
难道我做错了什么?或者是否有其他选项来更新模型,包括删除导航属性?或者我是否必须在模型文件中手动删除这些导航属性?
我正在使用实体框架版本1(VS 2008 SP1).
提前感谢您的帮助!
Cra*_*ntz 16
你正在做正确的更新.但是,在自动生成模型后,您可以自定义它.更新时,EF设计人员希望尝试保留您可能进行的任何自定义.它必须猜测这一点,并不总是正确的.我会尝试解释它是如何猜测的,因为这可能会帮助你.
您的EDMX有三个部分:
设计者"拥有"商店架构.每次更新时,它都会从头开始重新生成.虽然可以通过手动编辑SSDL来自定义存储架构,但在更新模型时经常会丢失这些更改.
另一方面,您"拥有"客户端架构.设计人员将在第一次运行时为您生成客户端模式,并为新导入的数据库元数据对象生成客户端模式,例如新映射的表或列.但是,一旦为对象生成了客户端模式,它通常就不会重新生成,因为设计人员正在尝试保留您的自定义设置.因此,如果以影响客户端架构的方式更改数据库,则必须手动更新客户端架构.您可以在GUI设计器中执行此操作,也可以在XML中手动执行此操作.
在您的情况下,最简单的方法可能是只选择GUI设计器中的导航并将其删除.这假设在关系的任一侧不再存在数据库中导航的ID属性.