我有一个公司模型:
public class Company
{
public int Id { get; set; }
...
public virtual ICollection<Useraccount> Useraccounts { get; set; }
}
和一个用户帐户模型:
public class Useraccount
{
public int Id { get; set; }
...
public virtual ICollection<Company> Companies { get; set; }
}
所以它是 am:n 连接:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Company>()
.HasMany(c => c.Useraccounts).WithMany(i => i.Companies)
.Map(t => t.MapLeftKey("CompanyId")
.MapRightKey("UseraccountId")
.ToTable("UseraccountCompany"));
}
但是,初始化数据库时会引发异常。
和
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
初始化工作。
我想保持级联删除,但我不知道如何管理它。我还想保留两个虚拟财产,以便我可以访问公司的用户帐户和用户帐户的公司。
顺便说一句,例外是:
在表“UseraccountCompany”上引入 FOREIGN KEY 约束“Company_Useraccounts_Target”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束。