C# 关系约束中从属角色和主要角色中的属性数必须相同
尝试在EF中添加迁移时出现问题。错误是 RegisterCountLog\u Register\u Target\u RegisterCountLog\u Register\u Source::关系约束中从属角色和主体角色中的属性数必须相同 课程如下:C# 关系约束中从属角色和主要角色中的属性数必须相同,c#,entity-framework,C#,Entity Framework,尝试在EF中添加迁移时出现问题。错误是 RegisterCountLog\u Register\u Target\u RegisterCountLog\u Register\u Source::关系约束中从属角色和主体角色中的属性数必须相同 课程如下: public class RegisterCountLog { [ForeignKey("CountLog")] public long DeviceSerial { get; set; } [Key, Column(O
public class RegisterCountLog
{
[ForeignKey("CountLog")]
public long DeviceSerial { get; set; }
[Key, Column(Order = 2)]
[ForeignKey("CountLog")]
public long LogEntryID { get; set; }
[Key, Column(Order = 3)]
[ForeignKey("Register")]
public long RegisterId { get; set; }
public long Value { get; set; }
public virtual CountLog CountLog { get; set; }
public virtual Register Register { get; set; }
}
public class Register
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key, Column(Order = 1)]
public long RegisterId { get; set; }
[Key, ForeignKey("Device"), Column(Order = 2)]
public long DeviceSerial { get; set; }
[StringLength(50)]
public string RegisterName { get; set; }
public ContributionType Contribution { get; set; }
public virtual Device Device { get; set; }
public virtual ICollection<RegisterCountLog> CountLogs { get; set; }
}
公共类注册表计数器日志
{
[外键(“CountLog”)]
公共长设备序列{get;set;}
[键,列(顺序=2)]
[外键(“CountLog”)]
公共长日志ID{get;set;}
[键,列(顺序=3)]
[外键(“寄存器”)]
公共长注册表ID{get;set;}
公共长值{get;set;}
公共虚拟CountLog CountLog{get;set;}
公共虚拟寄存器{get;set;}
}
公共班级登记册
{
[数据库生成(DatabaseGeneratedOption.None)]
[键,列(顺序=1)]
公共长注册表ID{get;set;}
[键,外键(“设备”),列(顺序=2)]
公共长设备序列{get;set;}
[长度(50)]
公共字符串注册表名{get;set;}
公共贡献类型贡献{get;set;}
公共虚拟设备{get;set;}
公共虚拟ICollection CountLogs{get;set;}
}
有人能帮忙吗?因此注册模型有一个复合键
RegisterId
和DeviceSerial
,您必须在RegisterCountLog
模型中指定这两个键
[ForeignKey("RegisterId,DeviceSerial")]
public virtual Register Register { get; set; }
因此,寄存器模型有一个复合键
RegisterId
和DeviceSerial
,您必须在RegisterCountLog
模型中指定这两个键
[ForeignKey("RegisterId,DeviceSerial")]
public virtual Register Register { get; set; }
这有什么区别?定义FK时,必须有一种方法来检索所引用的外部表。您不能仅用一个键检索注册表表,因为它有2个主键(1个主键不能唯一定义注册表类)。因此,您必须清楚地说明外部表的所有PK。这有什么区别?定义FK时,您必须有一种方法来检索所引用的外部表。您不能仅用一个键检索注册表表,因为它有2个主键(1个主键不能唯一定义注册表类)。因此,您必须清楚地说明外部表的所有PK。