我们正在使用POCO并拥有2个实体:Item和ItemContact。每个项目有一个或多个联系人。
项目具有主键:
的ItemID 语言代码
ItemContact具有:
的ItemID 的ContactID
我们无法添加与引用约束的关联,因为它们具有不同的键。没有严格的主/外键,因为ItemContact中的languageCode不是,而Item中的ContactID不是。
如果没有直接链接但是我仍然希望查看某个项目的联系人,我们如何将其与项目的联系人关联映射?
其中一个实体源自数据库视图,因此无法将外键添加到数据库
由于
斯蒂芬沃德答案 0 :(得分:2)
为了创建任何关系(在EF或任何ORM中)你必须有一些东西可以加入。
因为目前你不这样做,你需要制作一些东西......
我能想到的唯一选择是创建一个关系 - 使用here中描述的一些相同技术创建一个SSDL视图,使用基于交叉产品的<DefiningQuery>
来支持关系加入。
所以,如果你有这样的数据:
ItemID | LanguageCode
1 | a
和此:
ItemID | ContactID
1 | x
1 | y
1 | z
然后你的<DefiningQuery>
应该有T-SQL产生这样的东西:
Item_ItemID | Item_LanguageCode | ItemContact_ItemID | ItemContact_ContactID
1 | a | 1 | x
1 | a | 1 | y
1 | a | 1 | z
现在因为这在技术上是Independent Association - as opposed to an FK association - 你应该能够在CSDL中声称基数是1 - *即使SSDL中没有任何东西可以限制它 - 并且阻止它成为* - *。
希望这有帮助
Alex