如何使用Entity Framework在具有修订的两个表之间创建关系

时间:2010-04-30 20:41:15

标签: sql sql-server entity-framework sql-server-2008 entity-framework-4

所以我正在重新设计一个小型数据库(可能是一个更大的数据库),但希望显示使用业务对象的修订/历史记录的价值。我正在将数据从Access切换到MSSQL 2008.

我正在就设计本身使用的“修订历史”版本进行大量内部辩论 - 并且我认为我决定在所有表格中添加“RevisionId”。

使用此设计 - 将RevisionId添加到我们想要跟踪的所有表中 - 在两个表之间创建导航属性和关系的最佳方法是什么

| Vendor | VendorContact |  

供应商可以拥有多个联系人。联系人本身将进行修订。它需要自定义扩展还是我在想这个?

提前致谢。

1 个答案:

答案 0 :(得分:1)

因此,大概是您的Contact表的密钥现在是(生成的唯一ID +修订ID)。

只有使用唯一ID,供应商和联系人之间才会有FK关系。所以它将是1:多的映射。

获取当前联系人的简单请求将变为vendor.Contacts.OrderByDescending(c => c.RevisionId).First(),或者您可以根据需要获取该联系人的整个修订历史记录。

或者您是否正在尝试跟踪该联系人随时间的变化情况(即是A人而不是B人)?即关系本身是否需要有一个RevisionId?

或者您是否正在尝试跟踪关系的修订和对其指向的联系的修订?

vendor.VendorContacts.OrderBy...().First().Contact.OrderBy...().First()

这可能会很快变得难看!