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

时间:2011-06-06 20:40:51

标签: c# entity-framework entity-framework-4 self-tracking-entities

  1. TrackableCollection添加新实体(context.Entities.Add(entity))(EntityState = New)
  2. 不保存,从TrackableCollectioncontext.Entities.Remove(entity))删除添加的实体(EntityState =未修改)
  3. 保存。 (context.SubmitChanges()
  4. 我仍然从与实体相关的数据注释中获得验证错误,为什么?

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

2 个答案:

答案 0 :(得分:1)

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

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

我没有找到有关明确触发验证的详细信息,但您可以在调用context.SubmitChanges()

之前尝试调用AcceptChanges()或ObjectsAddedToCollectionProperties.Clear()和ObjectsRemovedFromCollectionProperties.Clear()。

答案 1 :(得分:0)

尝试

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

然后致电

context.SaveChanges()