Lambda 使用EF 4.1通过lamdada表达式或直接在数据库中更新集合

Lambda 使用EF 4.1通过lamdada表达式或直接在数据库中更新集合,lambda,entity-framework-4.1,Lambda,Entity Framework 4.1,我有一个对象(发票)的集合,我想通过EF 4.1在数据库中标记我正在处理的对象,所以没有其他人会抓取它们并处理它们 我今天就是这样做的 ICollection<Invoice> affectedInvoices = _inputDataRepository.GetNewInvoices(); DateTime processingTime = DateTime.Now foreach (Invoice invoice in affectedInvoices )

我有一个对象(发票)的集合,我想通过EF 4.1在数据库中标记我正在处理的对象,所以没有其他人会抓取它们并处理它们

我今天就是这样做的

  ICollection<Invoice> affectedInvoices = _inputDataRepository.GetNewInvoices();

  DateTime processingTime = DateTime.Now
  foreach (Invoice invoice in affectedInvoices )
       invoice.ProcessingDate = ProcessingTime

  _inputDataRepository.UpdateInvoices(invoicesToBeMarked);
或者,我的集合中有发票的SQL更新语句的数量也会一样多。如果是这种情况,是否有某种方法可以通过EF DbContext向数据库发送SQLStatement

如果是这样的话,我就不必打开新的连接并为此创建特定的代码


向每个人致意是修改数据的正确方式。不应在查询表达式中修改集合或其成员。请记住,查询表达式通常使用惰性枚举数

不,EF不会转换为
其中ID位于…

是的,您可以直接执行SQL。使用

UPDATE [Invoices] SET ProcessingDate = '2011-08-05 12:00:00' WHERE ID IN (1,2,3,4....)