我定义了以下关系,其中Customer
和Retailer
都是User
的外键。因此,User
可以是Customer
,Retailer
或两者。每个Customer
都可以包含Retailer
个列表,每个Retailer
都可以包含Customer
个列表。
该关系定义为:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Retailer>()
.HasRequired(x => x.User);
modelBuilder.Entity<Customer>()
.HasRequired(x => x.User);
}
实体定义如下:
public class Retailer : Entity
{
public string Name { get; set; }
public virtual User User { get; set; }
public ICollection<Customer> Customers { get; set; }
}
public class Customer : Entity
{
public string Name { get; set; }
public virtual User User { get; set; }
public ICollection<Retailer> Retailers { get; set; }
}
public class User : AbpUser<Tenant, User>
{
public string AccessToken { get; set; }
public long UserId { get; set; }
public virtual Retailer Retailer { get; set; }
public virtual Customer Customer { get; set; }
}
当我尝试删除具有User
或Customer
外键的Retailer
时,我收到错误(取决于外键的类型):
DELETE语句与REFERENCE约束冲突&#34; FK_dbo.Customers_dbo.AbpUsers_User_Id&#34;。冲突发生在数据库&#34; ShopDB&#34;,table&#34; dbo.Customers&#34;,column&#39; User_Id&#39;。
或
DELETE语句与REFERENCE约束冲突&#34; FK_dbo.Retailers_dbo.AbpUsers_User_Id&#34;。冲突发生在数据库&#34; ShopDB&#34;,table&#34; dbo.Retailers&#34;,column&#39; User_Id&#39;。
我需要更改哪些内容,以便在删除User
时User
的所有外国参考也被级联删除?