Удалить список объектов одного и того же объекта при обновлении - PullRequest
0 голосов
/ 30 октября 2018

Привет всем, я не могу найти решение этой проблемы, у меня есть сущность, у которой есть свойство, созданное следующим образом 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<>?

1 Ответ

0 голосов
/ 31 октября 2018

Я не могу найти решение этой проблемы, поэтому я заканчиваю создание самостоятельно Entitie "RelatedFoos", но без modelBuilder, это новое право - это всего лишь таблица отношений для создания "Foo" против "Foo" N отношений.

Я создаю Модель и добавляю в DbContext, создаю миграцию, так что таким образом я могу использовать этот Класс Модели для создания обновлений или удалений без проблем.

Спасибо заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...