删除孤儿,我有以下代码:一个一对多
public class Parent
{
public int ParentId {get;set;}
public ICollection<Child> Children {get;set;}
}
public class Child
{
public int ChildId {get;set;}
public Parent Parent {get;set;}
}
它映射为一个一对多的EF没有任何额外的努力。当我更换新的集合儿童(3个另一个项目)我有孩子,表老孤儿实体是这样的:
Id | Parent_Id
1 NULL <-- orphan
2 NULL <-- orphan
3 NULL <-- orphan
4 1 <-- new
5 1 <-- new
6 1 <-- new
我想要得到与标识关系明确地摆脱他们:
modelBuilder.Entity<Child>().HasKey(x => new { x.ChildId, x.ParentId });
modelBuilder.Entity<Parent>().HasMany(x => x.Children).WithRequired().HasForeignKey(x => x.ParentId);
但我没有ParentId属性在儿童中。我只有“父”直接指向父实体。如果我尝试
modelBuilder.Entity<Child>().HasKey(x => new { x.ChildId, x.Parent });
我得到一个错误信息:
属性...不能用作实体......一个关键属性,因为属性类型不是有效的密钥类型
有什么办法可以删除所有不必要的孤儿吗?