2010-06-02 79 views
4

我有一個單一的LINQ到SQL類。我想檢測它是否是新的(意味着插入將完成)或者是否有任何未決更改(將會完成更新)。我意識到我可以通過使用partial類並掛鉤每個屬性的更改事件來做到這一點。然而,對於一個不斷變化的班級來說,這是一個很大的維護。如何判斷linq到sql對象是新的,修改還是未更改?

有沒有更好的方法?

回答

7

您可以通過DataContext類來檢查。

首先,檢查ObjectTrackingEnabled propertyDataContext。如果它返回false,那麼該對象不會被上下文跟蹤。

然後,撥打DataContext上的GetChangeSet method。從那裏,將Deletes,UpdatesInserts屬性提供的參考文件與您的對象進行比較。

如果在任何這些列表中找到了引用,那麼您的對象正在被該列表追蹤,您可以從那裏繼續。

+0

所以這樣做是從DataContext的,那麼唯一的辦法嗎?我希望僅僅從對象實例中完成。 – 2010-06-02 19:28:10

+0

@Jason Webb:如果你沒有DataContext,那麼它是無關緊要的,你不能做一個插入,更新或刪除沒有,並且對象的狀態是分離的。 – casperOne 2010-06-02 21:37:28

-1

檢查對象的ID爲0

if someId = 0 
    Insert(); 
else 
    Update(); 

Simples

+0

Research DeferredLoading和谷歌Detach()方法 - 這是你必須實現的東西,但它通過LINQ插入會爲你節省一些麻煩。 – 2010-06-02 22:38:43

相關問題