更新时删除同一实体的实体列表
Delete List of entities of the same entity on update
大家好,我找不到这个问题的解决方案,我有一个实体,它在 DbModelBuilder
上创建了一个像这样的 属性
首先是一个 class 和一个 属性 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
保存在新的table(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" 但是没有模型构建器,这个新实体只是一个关系 table 用于创建 "Foo"对"Foo"N个关系。
我创建模型并添加到 DbContext,创建迁移,因此,通过这种方式我可以使用此模型 Class 毫无问题地进行更新或删除。
提前致谢。
大家好,我找不到这个问题的解决方案,我有一个实体,它在 DbModelBuilder
首先是一个 class 和一个 属性 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
保存在新的table(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" 但是没有模型构建器,这个新实体只是一个关系 table 用于创建 "Foo"对"Foo"N个关系。
我创建模型并添加到 DbContext,创建迁移,因此,通过这种方式我可以使用此模型 Class 毫无问题地进行更新或删除。
提前致谢。