【问题标题】:Why is entity still validated when it is gone?为什么实体在消失后仍然得到验证?
【发布时间】:2011-09-09 14:38:16
【问题描述】:
  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; }
    }

【问题讨论】:

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


    【解决方案1】:

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

    此链接包含有关幕后情况的更多信息:MSDN

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

    【讨论】:

    • 嗯,这些成员对我来说似乎不存在。
    【解决方案2】:

    试试

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

    然后调用

    context.SaveChanges()
    

    ;)

    【讨论】:

      猜你喜欢
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      相关资源
      最近更新 更多