EF6 从联接表中删除条目



我在客户(例如公司(和人员之间具有多对多关系。 将新的已存储人员添加到公司是有效的,但是如果有人停止在该公司工作,如何删除这两者之间的关联?

我不想删除此人或公司。只是我的customer_person连接表中的条目。

像这样:

context.Entry(someCustomer.somePerson).State = System.Data.Entity.EntityState.Deleted;

删除此人。那不是我想要的。

正确的方法是:

数据库上下文中的第一个添加级联删除约定。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add<OneToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Add<ManyToManyCascadeDeleteConvention>();
base.OnModelCreating(modelBuilder);
}

然后在您的 POCO 类中您不想删除的关系 将属性声明为stringint?,具体取决于主键类型

例:

public int? personRefno {get;set;}
or
public string personRefno {get;set;}   

当类型可为空时,例如字符串或整数?(注意,当您添加问号时,它表示可为空(

EF 不会删除相关记录,保留该记录并将 personRefno 设置为 null

最新更新