我有2个相关的实体,但是旧版的sql模式实质上为同一个表具有2个关键列(不是2列关键字:见下文)。我需要向“伪关键字”列创建回关系。在Entity Framework 4.1中是否有一种声明性的方法可以实现这一点?
Public Class Client
Inherits ModelBase
<Key(), Required()>
Public Property ClientID As Decimal
<Required(), StringLength(50)>
Public Property ClientCode As String
........
Public Class ClientLocation
Inherits ModelBase
........
<Required(), StringLength(50)>
Public Property ClientCode As String
........
<ForeignKey("ClientCode")>
Public Overridable Property Client As Clients.Client
我得到的错误是:
在模型生成过程中检测到一个或多个验证错误: System.Data.Edm.EdmAssociationConstraint:引用约束的从属角色中所有属性的类型必须与主要角色中对应属性的类型相同。实体“ClientLocation”上属性“ClientCode”的类型与实体“Client”上属性“ClientID”的类型不匹配,在引用约束“ClientLocation_Client”中。
因为它认为我正在尝试将ClientLocation.ClientCode > Client.ClientID映射,而我实际上是要将ClientLocation.ClientCode > Client.ClientCode进行映射...
有什么想法吗?
谢谢!
Client.ClientCode
是数据库中具有唯一索引的列吗?或者这两个关键列是什么,但不是复合关键字?您想以某种方式将ClientLocation.Client
映射到此唯一列Client.ClientCode
吗? - SlaumaClientCode
只是一个普通的列。唯一性只是因为业务逻辑的偶然保证。恐怕Ladilav的答案就是最终答案。 - Slauma