我正在尝试使用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关联的映射详细信息,我认为这将使其起作用。
有什么想法吗?非常感谢。
答案 0 :(得分:0)
这是M x N关系。为什么?因为可以将某项功能分配给多种类型的产品。
你应该有一个像这样的表ProductFeatures:
ProductId FeatureId
1 1
1 2
2 1
2 2
答案 1 :(得分:0)
找到一个解决方案:从要素实体中删除标量属性“ProductId”:
但是,在EF为您提供的自动生成的关系中,如果您在数据库中设置了外键,例如'ParentId'字段 在子项中作为标量字段存在。< / p>
所以我仍然有点困惑。
-edit-进一步的帮助:
http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspx