删除更新时相同实体的实体列表



大家好,我找不到这个问题的解决方案,我有一个实体在DbModelBuilder上创建了这样的属性

首先是一个属性为RelatedFoo的类,它是同一Foo实体的列表

public class Foo
{
public int FooId { get; set; }
public string Name { get; set; }
public virtual List<Foo> RelatedFoo { get; set; }
}

这是在DbContext中创建的

modelBuilder.Entity<Foo>()
.HasMany(p => p.RelatedFoo)
.WithMany()
.Map(m =>
{
m.MapLeftKey("FooId");
m.MapRightKey("RelatedFooId");
m.ToTable("RelatedFoos");                
});

迁移的结果类似于

CreateTable(
"dbo.RelatedFoos",
c => new
{
FooId= c.Int(nullable: false),
RelatedFooId= c.Int(nullable: false),
})
.PrimaryKey(t => new { t.FooId, t.RelatedFooId })
.ForeignKey("dbo.Foo", t => t.FooId)
.ForeignKey("dbo.Foo", t => t.RelatedFooId )
.Index(t => t.FooId)
.Index(t => t.RelatedFooId );

一切如愿以偿,我可以做一些类似的事情:

//Create new list of relatedFoos        
List<Foo> relatedFoos = new List<Foo>();
//Add Foo entities to this list
relatedFoos.Add(fooEntity1);
relatedFoos.Add(fooEntity2);
//Add this List to a main Foo entity
Foo mainFooEntity.RelatedFoo = relatedFoos;
//Save this
db.Entry(mainFooEntity).State = EntityState.Modified;
db.SaveChanges();

并且relatedFoos被保存在新的表(RelatedFoos(中

当我尝试删除此relatedFoos时,问题出现了。。。我已经试过了:

//Starting from a main Foo Entity
mainFooEntity.RelatedFoo = null;
db.Entry(mainFooEntity).State = EntityState.Modified;
db.SaveChanges();

这不会删除"RelatedFoos"的数据,也不会将mainFooEntity.RelatedFoo分配给空的List<Foo>或删除当前数据。如何删除此List<>

我找不到解决方案,所以我最终自己创建了一个新的实体"RelatedFoos",但去掉了modelBuilder,这个新实体只是一个关系表,用于针对"Foo"N关系创建"Foo"。

我创建了模型并添加到DbContext,创建了迁移,所以,通过这种方式,我可以使用这个模型类进行更新或删除,而不会出现问题。

提前谢谢。

最新更新