在实体框架EDMX中创建视图之间的关联时出错



我在一个项目中使用视图和存储过程与EF5。我有一个EDMX,在设计器中有视图,我正试图手动创建两个视图中PK和FK之间的关联,当这样做时,我第一次得到这个错误:

错误5错误3027:没有为以下EntitySet/AssociationSet指定映射-vw_borrowervv_borrower_extension

然后,如果我在关联上进行表映射并选择pk和fk,我会收到这个错误:

错误5错误3007:映射从第309行、第351行开始的片段时出现问题:两个片段中的列[borrower_fk]被映射到不同的概念侧属性

在一个视图中,主键名称为borrower_pk,而在相关视图中,外键名称为borrow er_fk。

任何帮助都将不胜感激。

谢谢!

必须使用外键关联并将其映射为约束。目前,您很可能正在尝试映射独立关联,这在EDMX中是不可能的,因为独立关联被映射到它们的数据库对应项。您的数据库没有这些关系,因此它们没有在SSDL(EDMX中描述存储模型的部分)中进行描述,因此无法以这种方式进行映射。

如果您的实体不是只读的(=您使用的是为插入、更新和删除操作映射的存储过程),那么这仍然是非常危险的操作。EF决定来自SSDL的修改操作的顺序。如果您的SSDL不知道关系,EF将不知道父实体必须在子实体之前插入,子实体必须在父实体之前删除,等等。我不确定EF在没有任何引用约束的情况下是如何排序的,但从以前的一些答案来看,它看起来只是按字母顺序处理实体。

我最终做的是在EDMX中删除外键字段,然后在创建关联时将外键属性添加到实体中。这消除了错误。然而,这不是一个理想的解决方案。等不及EF6提供更好的代码优先存储过程支持了。

最新更新