如何在Entity Framework中将一个自定义实体映射到多个数据库表?

8
我在我的项目中使用了数据库优先模型。从数据库中导入了三个表DocumentDocumentItemProductenter image description here 我想要创建一个名为Order的新实体,将这三个数据库表的一些字段连接起来。如您在第一张图片中所见,我已经创建了该实体,并填写了其表映射,如您在第二张图片中所见。 enter image description here 在项目构建后,我收到以下错误信息:
Severity    Code    Description Project File    Line    Suppression State
Error       Error 3025: Problem in mapping fragments starting at line 193:Must specify mapping for all key properties (Product.Id) of table Product.    EFTest  C:\Users\Me\documents\visual studio 2015\Projects\EFTest\EFTest\Data\EfTest.edmx    194 
Error       Error 3025: Problem in mapping fragments starting at line 186:Must specify mapping for all key properties (Document.Id) of table Document.  EFTest  C:\Users\Me\documents\visual studio 2015\Projects\EFTest\EFTest\Data\EfTest.edmx    187 
Error       Error 3024: Problem in mapping fragments starting at line 193:Must specify mapping for all key properties (Orders.Id) of the EntitySet Orders.  EFTest  C:\Users\Me\documents\visual studio 2015\Projects\EFTest\EFTest\Data\EfTest.edmx    194 
Error       Error 3024: Problem in mapping fragments starting at line 186:Must specify mapping for all key properties (Orders.Id) of the EntitySet Orders.  EFTest  C:\Users\Me\documents\visual studio 2015\Projects\EFTest\EFTest\Data\EfTest.edmx    187 

我找不到问题的源头。我该如何解决这些错误?

你检查过数据库结构是否正确地映射到你的设计方案了吗?例如:在你的数据库中,product.Id 是否被定义为主键? - Hany Habib
@HanyHabib 是的,没问题。 - Bobs
最简单的方法不是创建一个数据库视图作为新实体吗? - Lobsterpants
1个回答

0

错误提示项目中缺少外键!

考虑到您知道,您不能简单地将数据库中的表添加到模型中,然后在模型中创建新的关联。默认情况下,它使用独立关联,必须映射到其数据库对应项(例如,关系也必须存在于数据库中)。您必须将您的关系建模为FK关联,但它仅允许一对一一对多关联。 换句话说,当您在EF4中选中“在模型中包含外键列”并添加一个不包含任何外键关系的新表时,尝试添加关联会触发此错误。解决方案是在EF4模型中定义不存在于数据库中的约束。

有时我们会遇到不必要的冲突,这可能会导致出现此类问题,您可以从EF设计器中删除表格,并手动删除与该表格相关的所有内容(在XML文件中),然后再次添加表格并重新设置正确的映射。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接