1

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

项目具有作为主键:

项目 ID 语言代码

ItemContact 有:

项目 ID 联系人 ID

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

如果没有直接链接但我仍然想查看某个项目的联系人,我们如何才能将此与项目的联系人关联进行映射?

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

谢谢

斯蒂芬·沃德

4

1 回答 1

2

为了创建任何关系(在 EF 或任何 ORM 中),您必须有一些东西可以加入。

因为在你不这样做的那一刻,你需要制造一些东西......

我能想到的唯一选择是创建关系 - 使用此处描述的一些相同技术来创建 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

现在因为这在技术上是一个独立的协会——而不是一个 FK 协会——你应该能够在 CSDL 中声称基数是 1——* 即使 SSDL 中没有任何东西可以限制它——并阻止它成为* - *。

希望这可以帮助

亚历克斯

于 2010-04-27T07:35:09.403 回答