我只想通过一个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