我正在使用一个非常古老的数据库设计,它有一个旧的EF EDMX模型和2个表。
Table 1:
Id
NodeId
ProviderId
StatusId
Date
Table 2:
Id
NodeId
ProviderId
StatusId
Date
UserId
Notes
在旧的edmx中,这有一个表1类,其属性具有表2的集合。
外键是来自两个表的NodeId / ProviderId的组合。在表1中,它是唯一的,在表2中它是重复的。
我试图在EF CodeFirst中重新执行此操作,但我无法弄清楚这一情况。
如何在表1的EntityTypeConfiguration
映射中映射?
当我绘制历史表时,我得到:
但是没有办法定义外键......
如果我尝试配置配置,请执行以下操作:
表1
HasMany(x => x.History)
.WithRequired(x => x.ParentStatus)
.HasForeignKey(x => new
{
x.NodeId,
x.ProviderId
});
和/或(尝试两者兼而有之)
HasRequired(x => x.ParentStatus)
.WithMany(x => x.History)
.HasForeignKey(x => new
{
x.NodeId,
x.ProviderId
});
两者都失败了:
在模型生成期间检测到一个或多个验证错误:
ApprovalStatusBase_History_Source_ApprovalStatusBase_History_Target :: a中从属角色和主要角色中的属性数量 关系约束必须相同。
我无法找到有关此错误的更多信息。
是因为两个表都有自己的主键但是由复合键连接?
这适用于旧的edmx :(