2010-02-05 62 views
2

我正在瀏覽大量業務對象並使用Linq-to-Sql將它們插入到數據庫中。檢查我是否已經插入特定記錄

一些業務對象包含付款方式記錄(支票,信用卡等)

當談到加入付款方式,我要檢查,以確保我還沒有已經添加它,否則COS當我來提交我的更改時,它會咆哮我。

if (!context.PaymentMethods.Any (paymentMethod => paymentMethod.PaymentMethodID == iPaymentMethod.PaymentMethodID)) 
{ 
    PaymentMethod method = new PaymentMethod(); 
    method.PaymentMethodID = iPaymentMethod.PaymentMethodID; 

    // etc... 

    context.PaymentMethods.InsertOnSubmit (method); 
} 

這不工作,我推測因爲任何檢查數據庫,而不是我將要插入提交的對象列表。

我知道我可以維護我自己的列表來檢查記錄是否已經添加,但爲了節省很多麻煩,我只是想知道是否有一個整齊的,Linq的方式來做到這一點?任何方式來檢查context.PaymentMethods,看看它是否已被添加?

回答

2

一個可能的解決辦法是檢查上下文的ChangeSet

Func<PaymentMethod,bool> f = 
    paymentMethod => paymentMethod.PaymentMethodID == iPaymentMethod.PaymentMethodID; 

if (!context.PaymentMethods.Any(f) && 
    !context.GetChangeSet().Inserts.OfType<PaymentMethod>().Any(f)) 
{ 
    // Submit 
} 
+0

甜如糖餅! :O) – 2010-02-05 16:44:18

0

試試這個:

!context.PaymentMethods.Where(paymentMethod => paymentMethod.PaymentMethodID == iPaymentMethod.PaymentMethodID).Count() = 0 
+0

不,同樣的事情。可以推測這是檢查它是否在數據庫中,而不是在我的提交列表中。 – 2010-02-05 16:28:16

相關問題