Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何首先在代码中实现多级继承_C#_Sql_Code First - Fatal编程技术网

C# 如何首先在代码中实现多级继承

C# 如何首先在代码中实现多级继承,c#,sql,code-first,C#,Sql,Code First,我使用代码优先的方法来创建数据库。我正在尝试使用TPH(每个层次结构的表)继承。我的POCO课程是: public abstract class Address { public int AddressId { get; set; } ... } public abstract class PersonalDetail : Address { public int PersonalDetailId { get; set; } ... } public p

我使用代码优先的方法来创建数据库。我正在尝试使用TPH(每个层次结构的表)继承。我的POCO课程是:

public abstract class Address
{
    public int AddressId { get; set; }
    ...
}

public abstract class PersonalDetail : Address
{
    public int PersonalDetailId { get; set; }
    ...   
}

public partial class AccountHolder : PersonalDetail
{
    public int AccountHolderId { get; set; }
}

public partial class Nominee : PersonalDetail
{
    public int NomineeId { get; set; }
}
我已经创建了两个抽象类Address和PersonalDetail,以及两个派生类AccountHolder和Submited。PersonalDetail继承地址,其他帐户持有人和被提名人继承PersonalDetail。我的fluent api代码是:

        modelBuilder.Entity<Address>().Map<PersonalDetail>(m => m.Requires("AddressOf"));
        modelBuilder.Entity<PersonalDetail>().Map<AccountHolder>(m => m.Requires("PersonalDetailOf"));
        modelBuilder.Entity<PersonalDetail>().Map<Nominee>(m => m.Requires("PersonalDetailOf"));
modelBuilder.Entity().Map(m=>m.Requires(“AddressOf”);
modelBuilder.Entity().Map(m=>m.Requires(“PersonalDetailOf”);
modelBuilder.Entity().Map(m=>m.Requires(“PersonalDetailOf”);
现在,当我尝试插入数据时,它抛出一个异常,即:

在表“Addresses”上引入外键约束“FK_dbo.Addresses_dbo.Addresses_AccountHolder_AddressId”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束


有谁能告诉我问题出在哪里,我如何解决这个问题吗?

你应该删除false

 modelBuilder.Entity<T>()
                    .HasRequired(e => e.)
                    .WithMany(t => t.)
                    .HasForeignKey(e => e.)
                    .WillCascadeOnDelete(false);
modelBuilder.Entity()
.HasRequired(e=>e.)
.有许多(t=>t.)
.HasForeignKey(e=>e.)
.WillCascadeOnDelete(假);
或者使用这个代码\

    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();   
modelBuilder.Conventions.Remove();

我使用了
modelBuilder.Conventions.Remove()但仍然是相同的错误,请您详细说明您的解决方案,我在代码第一世界是全新的,谢谢!