實體框架在我的AccountCompanyRole表中創建兩個不必要的列。實體框架 - 代碼優先 - 數據註釋 - 不必要的外鍵列
AccountCompany
public class AccountCompany
{
[Key, Column(Order = 0), ForeignKey("Account")]
public int AccountID { get; set; }
[Key, Column(Order = 1), ForeignKey("Company")]
public int CompanyID { get; set; }
public virtual Account Account { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<AccountCompanyRole> AccountCompanyRoles { get; set; }
}
AccountCompanyRoles
public class AccountCompanyRole
{
[Key, Column(Order = 0), ForeignKey("AccountCompany")]
public int AccountID { get; set; }
[Key, Column(Order = 1), ForeignKey("AccountCompany")]
public int CompanyID { get; set; }
[Key, Column(Order = 2), ForeignKey("Role")]
public int RoleID { get; set; }
public virtual AccountCompany AccountCompany { get; set; }
public virtual Role Role { get; set; }
}
OnModelCreating
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<AccountCompanyRole>()
.HasRequired(p => p.AccountCompany)
.WithMany()
.WillCascadeOnDelete(false);
base.OnModelCreating(modelBuilder);
}
結果在DB
正如你所看到的,EF甚至壽我指定的主密鑰和數據註釋外鍵增加了兩個外鍵在AccountCompanyRoles。
問題
如何防止它從創建AccountCompany_AccountID和AccountCompany_CompanyID?
這是我以後的最佳結構嗎?我是否應該使用一個主鍵並將IsUnique索引放在AccountID和CompanyID上?這可能會解決我的問題..
太慢....... – Indregaard
我仍然在AccountCompanyRole表中獲得兩個額外的列。我甚至刪除了DB/Migrations並重新創建了我的數據庫,但這也沒有幫助。 – Reft
嘗試爲您的AccountCompany關係添加流暢的配置以及(請參閱更新的答案) – Indregaard