Я использую Entity Framework Core в приложении WPF.
У меня есть такая модель:
Parent_Entity
_ Id
_ Коллекция Child_Entity
_ Current_Child_Entity(не сопоставлено)
Current_Child_Entity является одним из коллекции.Например:
Коллекция дочерней сущности :
child1
child2
Current_Child_Entity :
child2
Когда я пытаюсь сохранить изменения, я делаю что-то вроде этого:
1) AddOrUpdate (Current_Child_Entity)
2) AddOrUpdate (Parent_Entity)
Метод AddOrUpdate (), который я использовалреализован следующим образом:
public void AddOrUpdate(T entity)
{
if (!Context.Set<T>().Any(obj => obj == entity))
{
Context.Set<T>().Add(entity);
}
else
{
Context.Entry(entity).State = EntityState.Modified;
Update(entity);
}
}
Моя проблема, когда я делаю первое обновление (с Current_Child_Entity), все кажется хорошим.
Но когда я иду во второе обновление, где я сохраняю родительскую сущность, добавляет дублирование двух Child_Entity с одинаковым Id и одинаковыми свойствами в Collection of Child Entity.Например, если я обновил child2 в Collection of Child Entity, я получаю:
child1
child2
child2
Это происходит, когда я делаю это в AddOrUpdate ():
Context.Entry (entity) .State = EntityState.Modified;
Почему в этой инструкции делается дублирование дочернего объекта в коллекции?
Есть что-то, чего я не делаюпонимаете и не могли бы вы объяснить, что я делаю не так?
Спасибо за помощь.