EF:在不选择条件的情况下进行更新

时间:2019-02-08 23:02:12

标签: c# sql entity-framework

我只想通过一个SQL UPDATE调用来更新Entity Framework Core在db中的记录,但条件是该记录未删除。

此代码表示我要执行的操作,但是调用了2个数据库调用(选择+更新):

  var book = await context.Books.Where(b => b.Id == bookId && !m.Deleted).FirstOrDefaultAsync();
  if (usr == null) return null;

  book.ReturnDate = DateTime.Now;

  await context.SaveChangesAsync();

此代码更好:仅一个数据库调用,但不包括!m.Deleted条件(和空检查?)。

  var book = new Book() {
      Id = bookId,
      ReturnDate = DateTime.Now
  };

  this.context.Books.Attach(book);
  this.context.Entry(book).Property(p => p.ReturnDate).IsModified = true;
  await context.SaveChangesAsync();

如何用EF Core编写它,所以它只会生成一个UPDATE调用?像这样的东西:

UPDATE Books SET ReturnDate = GetDate() WHERE Id = BookId AND Deleted = 0

0 个答案:

没有答案