我有一个MasterUserApprovalOfficial实体,有两个外键,MasterUserId和SoftwareSystemId。 EF 7非常聪明,可以确定这两个属性是外键。这是我的MasterUserApprovalOfficial类
public class MasterUserApprovalOfficial
{
public int MasterUserApprovalOfficialId { get; set; }
public int MasterUserId { get; set; }
public MasterUser MasterUser { get; set; }
public int SofwareSystemId { get; set; }
public SoftwareSystem SoftwareSystem { get; set; }
public bool Active { get; set; }
public DateTime CreateDate { get; set; }
public MasterUserApprovalOfficial()
{
CreateDate = DateTime.Now;
}
}
如果我查看创建的表,MasterUserId列已创建并按预期命名,则SoftwareSystemId列创建为SoftwareSystemSoftwareSystemId
(附加到主键名称的类名称)< / p>
这有什么理由吗?
答案 0 :(得分:3)
public int SofwareSystemId { get; set; }
再次阅读该属性。那里有一个缺失:)
第二个答案也是对的,你不需要外键的属性。这个班的成员就够了
答案 1 :(得分:1)
使用ForeignKey
和Column
属性来解决此问题:
[ForeignKey("SoftwareSystem"),Column("SoftwareSystemId")]
public int SoftwareSystemId { get; set; }
默认情况下,外键后面会加上“Id”,但由于你已经拥有一个具有该名称的属性(并且EF不能识别它是外键,因此它会变为SoftwareSystemSoftwareSystemId
。