EF 4 - 与不匹配的键的关联

时间:2010-04-27 06:49:46

标签: entity-framework entity-framework-4

我们正在使用POCO并拥有2个实体:Item和ItemContact。每个项目有一个或多个联系人。

项目具有主键:

的ItemID 语言代码

ItemContact具有:

的ItemID 的ContactID

我们无法添加与引用约束的关联,因为它们具有不同的键。没有严格的主/外键,因为ItemContact中的languageCode不是,而Item中的ContactID不是。

如果没有直接链接但是我仍然希望查看某个项目的联系人,我们如何将其与项目的联系人关联映射?

其中一个实体源自数据库视图,因此无法将外键添加到数据库

由于

斯蒂芬沃德

1 个答案:

答案 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