2

我有一个项目,我在其中使用 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。

任何帮助将非常感激。

谢谢!

4

2 回答 2

0

What I ended up doing was in the EDMX remove the field that was the foreign key and then when creating the association let it add the foreign key properties to the entity. This got rid of the error. However this isn't an ideal solution. Can't wait for EF6 for better code-first stored procedure support.

于 2012-10-01T13:20:58.827 回答
0

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

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

于 2012-09-28T17:04:30.037 回答