实体框架6将现有的复杂类型添加到关键列

时间:2017-09-12 19:32:57

标签: c# entity-framework-6

我正在使用使用数据库优先方法构建的EF 6开发项目。有几个表以前有相同的3个属性映射到复杂类型(在整个代码中的几个地方使用)。这些属性被指定为"外键"尽管他们的父子关系从未在数据库中定义过。

最近,一位同事经历并正式定义了FK与SQL Server中的父表之间的关系。我现在正在尝试更新实体模型(从数据库更新),并且没有出现新的关联。我已经从模型中删除表并重新添加它们。他们现在表现出适当的联想。

但是,复杂类型的映射已不复存在。当我尝试将其添加回来时,更新的映射会破坏这些属性上的关联(保存时出现模型错误)。我知道复杂类型不支持关联。

是否建议在将列重新映射到复杂类型之前先删除列的关联?即使列在实体上不可见,EF是否会观察到基础密钥关系?

1 个答案:

答案 0 :(得分:0)

虽然我仍想对我的问题得到一些反馈,但这就是我为解决问题所做的工作。

1)从数据库中删除和重新添加表时,删除了EF生成的关联。请注意,这些关系仅适用于要由复杂类型替换的外键字段。

2)按照MS步骤(找到here)将必要的键属性重构为复杂类型

3)可选:我有必要直接将EDMX编辑为XML,以便删除一些无法用设计师修复的延迟关联

到目前为止,我的模型按预期运行。我相信在CRUD操作期间会观察到FK关系。