C# EF:不带条件选择的更新
我希望只使用一个SQL更新调用更新db by Entity框架核心中的记录,条件是记录未被删除 此代码表示我想做的事情,但调用2个db调用(选择+更新): 这段代码更好:只有一个db调用,但不包括!m、 删除条件(和空检查?) 怎么可能在efcore中编写它,从而只生成一个更新调用?像这样的:C# EF:不带条件选择的更新,c#,sql,entity-framework,C#,Sql,Entity Framework,我希望只使用一个SQL更新调用更新db by Entity框架核心中的记录,条件是记录未被删除 此代码表示我想做的事情,但调用2个db调用(选择+更新): 这段代码更好:只有一个db调用,但不包括!m、 删除条件(和空检查?) 怎么可能在efcore中编写它,从而只生成一个更新调用?像这样的: UPDATE Books SET ReturnDate = GetDate() WHERE Id = BookId AND Deleted = 0 请参阅[ConcurrencyCheck]指示EF将属
UPDATE Books SET ReturnDate = GetDate() WHERE Id = BookId AND Deleted = 0
请参阅[ConcurrencyCheck]指示EF将属性包含在更新位置部分中的可能副本。这很好。但是,当条件不满足时,它会抛出一个异常。您认为IsConcurrencyToken通常可以用于形成更新中的where条件吗?我认为这只是一个解决办法。请参阅[ConcurrencyCheck]指示EF将属性包含在更新的WHERE部分中的可能重复项。这很好。但是,当条件不满足时,它会抛出一个异常。您认为IsConcurrencyToken通常可以用于形成更新中的where条件吗?我更认为这只是一个解决办法。
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();
UPDATE Books SET ReturnDate = GetDate() WHERE Id = BookId AND Deleted = 0