【发布时间】:2015-06-02 17:38:42
【问题描述】:
正如您在下面看到的,有一个枚举值的查找表,我想在表的枚举值和查找表的 LookupKey 列之间创建关系(而不是 ID 列查找表)。
查找表:
ID | LookupType | LookupKey | LookupValue |
101 | Status | 0 | Passive |
106 | Gender | 1 | Male |
113 | Status | 1 | Active |
114 | Gender | 2 | Female |
118 | Status | 2 | Cancelled |
主表:
ID | Status | Gender | Name | ...
1 | 0 | 1 | John Smith | ...
2 | 1 | 2 | Christof Jahnsen | ...
3 | 2 | 1 | Alexi Tenesis | ...
4 | 0 | 2 | Jurgen Fechtner | ...
5 | 1 | 2 | Andreas Folk | ...
但是,当在DataAnnotations - InverseProperty Attribute 上使用 PK-FK 关系和 InverseProperty 时,关系是使用 Lookup 表的 ID 列创建的,我无法与 LookupKey 列建立关系。你能举例说明如何实现这一目标吗?
【问题讨论】:
-
为什么要投反对票而不是回答???
-
为什么不想使用 ID 列?您不能单独使用查找键,因为它不是唯一的。我想您可以做一些棘手的事情,例如 .HasForeignKey(m => new {m.GenderLookupType, m.GenderLookupKey}) 但现在您的主表中每个关系都有 2 个字段。
-
除了 ID 列之外,它是否有助于我使 LookupKey 列成为主键?实际上,我目前对两者都使用 ID 列:作为“ID”和“LookupKey”。但是,在这种情况下,查找键会变成 1、2、7、25,因为将来会添加新值。另一方面,我希望按顺序创建 LookupKey 值,即 1、2、3、4、.... 等。那么,使用额外的键值(即“LookupKey”)是不是坏主意?当开发人员尝试使用查找表时,这种情况下的一般用法是什么?他们是否对记录和 LookupKey 都使用 ID 列?你能澄清一下吗?
标签: asp.net-mvc entity-framework entity-framework-6 entity-relationship ef-fluent-api