在Entity Framework中定义1对多的关系

时间:2010-10-11 23:25:20

标签: c# entity-framework .net-4.0

我正在尝试使用Entity Framework(.net 4.0)创建1:m关系,并收到以下错误:

App_Code.Model.msl(36,6) : error 3007: Problem in mapping fragments
starting at lines 6, 36:Column(s) [ProductId] are being mapped in
both fragments to different conceptual side properties.

我拥有的是Products表和Features表。这个想法是产品有很多功能。每个产品都有一个ProductId,而Features有一个ProductId外键。

现在问题是sql server中不存在外键,我不希望它。如果确实如此,那么这一切都会自动完成。

在EDMX设计器中,我创建了从产品到要素实体的关联,然后根据要素表编辑了ProductFeature关联的映射详细信息,我认为这将使其起作用。

有什么想法吗?非常感谢。

2 个答案:

答案 0 :(得分:0)

这是M x N关系。为什么?因为可以将某项功能分配给多种类型的产品。

你应该有一个像这样的表ProductFeatures:

ProductId  FeatureId
1          1
1          2
2          1
2          2

答案 1 :(得分:0)

找到一个解决方案:从要素实体中删除标量属性“ProductId”:

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/a71901fb-97ec-4072-949a-c0c66a9775b1

但是,在EF为您提供的自动生成的关系中,如果您在数据库中设置了外键,例如'ParentId'字段 在子项中作为标量字段存在。< / p>

所以我仍然有点困惑。

-edit-进一步的帮助:

http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspx