在实体框架中定义一对多关系

我试图使用实体框架(.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.

我拥有的是一个产品表和一个功能表。 这个想法是产品有很多特点。 每个产品都有一个ProductId,并且这些Features具有一个ProductId外键。

现在的问题是外键在sql server中不存在,我不希望它。 如果确实如此,那么它全部自动地很好地工作。

在EDMX设计师中,我创建了一个从产品到特征实体的关联,然后将ProductFeature关联的映射细节编辑为基于特征表,我认为这会使其工作。

有任何想法吗? 非常感谢。


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

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

ProductId  FeatureId
1          1
1          2
2          1
2          2

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

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

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

所以我仍然有点困惑。

- 编辑 - 进一步的帮助:

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

链接地址: http://www.djcxy.com/p/6389.html

上一篇: Defining a 1 to many relationship in Entity Framework

下一篇: Schema for a multilanguage database