【发布时间】:2016-03-07 08:29:59
【问题描述】:
Entity Framework 正在我的 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);
}
数据库中的结果
如您所见,EF 在 AccountCompanyRoles 中添加了两个额外的外键,即使我在 Data Annotations 中指定了主键和外键。
问题
如何防止它创建 AccountCompany_AccountID 和 AccountCompany_CompanyID?
这是我所追求的最佳结构吗?我应该改用一个主键并将 IsUnique 索引放在 AccountID 和 CompanyID 上吗?这可能会解决我的问题..
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework entity-framework-6