2015-11-27 2 views
0

У меня есть класс, созданный инфраструктурой сущности (Document). Он имеет коллекцию другого класса (FileInfo).Entity Framework отменяет добавленные/удаленные элементы в EntityCollection

/// <summary> 
/// No Metadata Documentation available. 
/// </summary> 
[EdmEntityTypeAttribute(NamespaceName="DocumentManagerModel", Name="DocumentContainer")] 
[Serializable()] 
[DataContractAttribute(IsReference=true)] 
public partial class DocumentContainer : EntityObject 
{ 
    ... 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [XmlIgnoreAttribute()] 
    [SoapIgnoreAttribute()] 
    [DataMemberAttribute()] 
    [EdmRelationshipNavigationPropertyAttribute("DocumentManagerModel", "FK__FileInfo__00000000000018FA", "FileInfo")] 
    public EntityCollection<FileInfo> FileInfoes 
    { 
     get 
     { 
      return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<FileInfo>("DocumentManagerModel.FK__FileInfo__00000000000018FA", "FileInfo"); 
     } 
     set 
     { 
      if ((value != null)) 
      { 
       ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<FileInfo>("DocumentManagerModel.FK__FileInfo__00000000000018FA", "FileInfo", value); 
      } 
     } 
    } 

    ... 

} 

Теперь пользователь может добавить или удалить элемент в коллекции (FileInfos) через графический интерфейс. Форма gui имеет кнопку отмены. Как мне можно сбросить все изменения в коллекции?

+0

Вы можете скопировать всю коллекцию FileInfos и сохранить ее начальное состояние. Затем вы можете использовать эту копию, чтобы вернуть изменения и сделать откат, если пользователь нажмет «отменить». – Fabjan

ответ

1

Пока вы не звоните dbcontext.SaveChanges() ничего не сохраняется в базе данных. Когда они нажимают кнопку «Отмена», я просто удалю dbcontext и создаю новый, если бы я был вами.

Вызов

dbcontext.Entry(myEntity).CurrentValues.SetValues(dbcontext.Entry(myEntity).OriginalValues); 
dbcontext.Entry(myEntity).State = EntityState.UnChanged; 

должны также сделать трюк.

Смежные вопросы