2010-02-05 72 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