检查我是否已插入特定记录

时间:2010-02-05 16:14:34

标签: c# linq-to-sql

我正在浏览大量业务对象并使用Linq-to-Sql将它们插入数据库。

某些业务对象包含付款方式记录(支票,信用卡等)。

当谈到添加付款方式时,我想检查以确保我还没有添加它,因为当我来提交我的更改时它会咆哮我。

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

    // etc...

    context.PaymentMethods.InsertOnSubmit ( method );
 }

这不起作用,我认为因为Any正在检查数据库而不是我要在提交时插入的对象列表。

我知道我可以维护自己的列表以检查记录是否已被添加,但为了省去很多麻烦,我只是想知道是否有一个整洁的,Linq方式来做到这一点?有没有办法检查context.PaymentMethods以查看它是否已被添加?

2 个答案:

答案 0 :(得分:2)

可能的解决方案是检查上下文的ChangeSet

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

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

答案 1 :(得分:0)

试试这个:

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