Почему объект все еще проверяется, когда он исчез?

#c# #entity-framework #entity-framework-4 #self-tracking-entities

#c# #entity-framework #entity-framework-4 #самоотслеживающиеся объекты

Вопрос:

  1. Добавьте новый объект в TrackableCollection ( context.Entities.Add(entity) ) (EntityState = New)
  2. Без сохранения удалите добавленный объект из TrackableCollection ( context.Entities.Remove(entity) ) (EntityState = Неизмененный)
  3. Сохранить. ( context.SubmitChanges() )

Я все еще получаю ошибки проверки из аннотаций данных, связанных с объектом, почему?

     public class Entity
    {
       [Required]
       public string Name { get; set; }
    }
  

Ответ №1:

Он отслеживает коллекцию удаленных объектов, даже если она не была сохранена в вашем хранилище (она находится в свойстве ObjectsRemovedFromCollection).

По этой ссылке содержится дополнительная информация о том, что происходит под капотом: MSDN

Я не нахожу подробностей о том, что явно запускает проверку, но вы можете попробовать вызвать AcceptChanges() или ObjectsAddedToCollectionProperties.Clear() и ObjectsRemovedFromCollectionProperties.Очистить () перед вызовом context.SubmitChanges()

Комментарии:

1. Хм, кажется, что эти участники для меня не существуют.

Ответ №2:

попробуйте

 context.Entry(entity).State = EntityState.Detached
  

затем вызовите

 context.SaveChanges()
  

😉