为什么实体在消失后仍然有效?

O.O*_*O.O 12 c# entity-framework entity-framework-4 self-tracking-entities

  1. 将新实体添加到TrackableCollection(context.Entities.Add(entity))(EntityState = New)
  2. 在不保存的情况下,从TrackableCollection(context.Entities.Remove(entity))中删除添加的实体(EntityState = Unmodified)
  3. 保存.(context.SubmitChanges())

我仍然从与实体关联的数据注释中获得验证错误,为什么?

    public class Entity
    {
       [Required]
       public string Name { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

Bra*_*ine 1

它正在跟踪已删除实体的集合,即使它没有持久保存到您的存储中(它位于 ObjectsRemovedFromCollection 属性中)。

此链接提供了有关幕后情况的更多信息:MSDN

我没有找到有关显式触发验证的详细信息,但您可以在调用 context.SubmitChanges() 之前尝试调用 AcceptChanges() 或 ObjectsAddedToCollectionProperties.Clear() 和 ObjectsRemovedFromCollectionProperties.Clear()