我只想根据下面提到的条件更新字段。我知道如何用SQL编写它。我不确定如何在 Entity Framework 中完成此操作。
UPDATE Table SET SomeDateTime = @NewDateTime WHERE Id = @MyId AND SomeDateTime > @NewDateTime
由于要使用微服务架构,因此我想使用此特定查询。
最佳答案
如果要直接使用sql,可以使用ExecuteSqlCommand
如果要处理一个对象然后进行更新,我将更改一个对象并调用SaveChanges
,但事实并非如此。.这是对表的直接更新,如果该表具有数百万行,则您要执行sql
以获得性能在那上面。
例子
using(var context = new SampleContext())
{
var commandText = "UPDATE Table SET SomeDateTime = @NewDateTime WHERE Id = @MyId AND SomeDateTime > @NewDateTime";
var newDateTime = new SqlParameter("@NewDateTime", myDateValue);
var myId = new SqlParameter("@MyId", myIdValue);
context.Database.ExecuteSqlCommand(commandText, new[]{newDateTime,myId});
}