关系约束中“从属角色”和“主体角色”中的属性数必须相同

本文关键字:角色 属性 约束 从属角色 主体 关系 主体角色 | 更新日期: 2023-09-27 18:23:59

尝试在EF中添加迁移时遇到问题。错误为

RegisterCountLog_Register_Target_RegisterCountLog_Register_Source::关系约束中从属角色和主体角色中的属性数必须相同。

类别如下:

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; }
}

有人能帮忙吗?

关系约束中“从属角色”和“主体角色”中的属性数必须相同

因此,寄存器模型有一个复合密钥RegisterIdDeviceSerial,您必须在RegisterCountLog模型中指定这两个密钥。

[ForeignKey("RegisterId,DeviceSerial")]
public virtual Register Register { get; set; }