我只想根据下面提到的条件更新字段。我知道如何用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});
}

10-06 05:57