首页 > 解决方案 > 如何使用 Entity Framework .NET Core 编写带有 where 子句的 SQL 更新查询

问题描述

我只想根据下面提到的条件更新一个字段。我知道如何用 SQL 编写它。我不确定如何在实体框架中实现这一点。

UPDATE Table SET SomeDateTime = @NewDateTime WHERE Id = @MyId AND SomeDateTime > @NewDateTime

由于使用了微服务架构,我想使用这个特定的查询。

标签: c#sqlentity-framework-core

解决方案


如果Id是主键,这意味着您只能找到一条记录,那么我更新它的方式是检索记录,更改我要编辑的属性的值,然后将更改保存在上下文中。

int MyId = ...
DateTime NewDateTime = ...

using (YourDbContext dbContext = new YourDbContext())
{
   YourObject obj = dbContext.YourObjects.SingleOrDefault(item => item.Id == MyId && item.SomeDateTime > NewDateTime)
   if (obj != null)
   {
      obj.SomeDateTime = NewDateTime;
      dbContext.SaveChanges();
   }
}

推荐阅读