在实体框架 EDMX 中创建视图之间的关联时出错
Posted
技术标签:
【中文标题】在实体框架 EDMX 中创建视图之间的关联时出错【英文标题】:Error Creating an Association between Views in Entity Framework EDMX 【发布时间】:2012-09-28 13:57:12 【问题描述】:我有一个项目,我在其中使用 EF5 的视图和存储过程。我在设计器中有一个带有视图的 EDMX,并且正在尝试跨 2 个视图手动创建 PK 和 FK 之间的关联,这样做时我首先收到此错误:
错误 5 错误 3027:没有为以下 EntitySet/AssociationSet - vw_borrowervw_borrower_extension 指定映射。
然后,如果我对关联进行表映射并选择 pk 和 fk,我会收到此错误:
错误 5 错误 3007:从第 309、351 行开始映射片段时出现问题:列 [borrower_fk] 在两个片段中都被映射到不同的概念侧属性。
在一个视图中,主键名为borrower_pk,而在相关视图中,外键名为borrower_fk。
任何帮助将不胜感激。
谢谢!
【问题讨论】:
可能重复:***.com/questions/1015925/… 前几天我看到了那个帖子,但它似乎没有解决我遇到的确切问题。我正在使用 EF 推断 PK 的视图,但是当我尝试手动将一个实体中的 PK 关联添加到另一个 FK 实体中的字段时,它会出错。 【参考方案1】:您必须使用Foreign key association 和map it as constraint。目前,您很可能正在尝试映射独立关联,这在 EDMX 中是不可能的,因为独立关联被映射到它们的数据库对应项。您的数据库没有这些关系,因此它们没有在 SSDL(EDMX 描述存储模型的部分)中描述,因此无法以这种方式映射。
如果您的实体不是只读的(= 您正在使用为插入、更新和删除操作映射的存储过程),这仍然是非常危险的操作。 EF 从 SSDL 决定修改操作的顺序。如果您的 SSDL 不知道关系 EF 将不知道必须在子实体之前插入父实体,必须在父实体之前删除子实体,等等。我不确定 EF 在不知道时如何订购操作'没有任何参考约束,但从以前的答案看来,它只是按字母顺序处理实体。
【讨论】:
【参考方案2】:我最终做的是在 EDMX 中删除作为外键的字段,然后在创建关联时让它将外键属性添加到实体。这摆脱了错误。然而,这不是一个理想的解决方案。等不及 EF6 以获得更好的代码优先存储过程支持。
【讨论】:
以上是关于在实体框架 EDMX 中创建视图之间的关联时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用flask-restplus在flask-SQLAlchemy中创建多对多关联表时出错