C# 如何首先在代码中实现多级继承
我使用代码优先的方法来创建数据库。我正在尝试使用TPH(每个层次结构的表)继承。我的POCO课程是: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
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()代码>但仍然是相同的错误,请您详细说明您的解决方案,我在代码第一世界是全新的,谢谢!