2011-05-10 29 views
2

嗨 我有一個方法來重置數據對象,通過調用DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, Entity);我可以在LINQ to SQL中訪問數據實體的對象狀態嗎?

Catch是傳遞給方法的一些對象是來自datacontext並且已被更改的對象,但其他一些是新對象。新對象沒有附加到datacontext並被丟棄。

當在未連接的對象上調用DataContext.Refresh時,我得到一個System.ArgumentException,因爲DataContext不熟悉它。

有沒有辦法獲得單個對象的跟蹤狀態(定義在這裏:http://msdn.microsoft.com/en-us/library/bb386982.aspx),所以我可以弄清楚它是一個修改對象還是一個新對象?

問候

回答

3

你可以這樣做:

var changes = DbContext.GetChangeSet(); 
if(changes.Updates.Contains(EntityToCheck)) 
    //Changed state 
else if(changes.Inserts.Contains(EntityToCheck)) 
    //New state 
else if(changes.Deletes.Contains(EntityToCheck)) 
    //Delete state 
+0

謝謝,這是一個很好的方法。 – 2011-05-10 15:05:44

相關問題