我正在浏览大量业务对象并使用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以查看它是否已被添加?
答案 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