0

大家好,我找不到解决这个问题的方法,我有一个实体,它有一个像这样创建的属性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<>

4

1 回答 1

0

我找不到解决方案,所以我最终自己创建了一个新的实体“RelatedFoos”,但没有modelBuilder,这个新实体只是一个关系表,用于创建“Foo”与“Foo”N 关系。

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

提前致谢。

于 2018-10-31T20:26:09.520 回答