如何更新數據存儲中的所有臟實體,並將更改後的值重置為原始存儲值?

ObjectContext.Refresh方法需要刷新實體作為參數。

一般承認的答案

以下通常有效:

Context.Refresh(RefreshMode.StoreWins, _
    Context.ObjectStateManager.GetObjectStateEntries())

它有時會導致EntityRelations出現問題。查看我的評論以獲取更多詳細信息。


熱門答案

您可以使用此代碼:

public void RefreshAll()
{
     // Get all objects in statemanager with entityKey 
     // (context.Refresh will throw an exception otherwise) 
     var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries(
                                                 EntityState.Deleted 
                                               | EntityState.Modified 
                                               | EntityState.Unchanged)
                                      where entry.EntityKey != null
                                      select entry.Entity);

     context.Refresh(RefreshMode.StoreWins, refreshableObjects);
}

我寫了一篇關於如何RefreshAll()的文章,並以其他方式刷新上下文:

http://christianarg.wordpress.com/2013/06/13/entityframework-refreshall-loaded-entities-from-database/



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因