实体不会级联删除,而是抛出错误。如何修改关系以允许此操作?

时间:2016-06-16 22:21:13

标签: c# entity-framework

我定义了以下关系,其中CustomerRetailer都是User的外键。因此,User可以是CustomerRetailer或两者。每个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; }
}

当我尝试删除具有UserCustomer外键的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;。

我需要更改哪些内容,以便在删除UserUser的所有外国参考也被级联删除?

0 个答案:

没有答案