gpt4 book ai didi

c# - EF 核心 : Update column only for modified properties from disconnected entity

转载 作者:行者123 更新时间:2023-12-04 15:15:08 24 4
gpt4 key购买 nike

我正在将 Entity Framework Core 3.1 与 SQL Server 结合使用。

我搜索如何仅针对断开连接的实体的修改属性更新列,例如:

public void UpdateOrderCustomer(int orderId, string customerName)
{
var order = new Order { Id = orderId };

using(var context = new MyDbContext())
{
context.Update(order);
order.Customer = customerName;
context.SaveChanges();
}
}

但这会更新所有订单的列。

一种解决方案是在更新属性之前加载实体,例如:

public void UpdateOrderCustomer(int orderId, string customerName)
{
using(var context = new MyDbContext())
{
var order = context.Orders.Single(o => o.Id == orderId);
order.Customer = customerName;
context.SaveChanges();
}
}

但是要加载实体,这会执行一个额外的无用查询。

我希望有一个 BeginTracking 方法,但我还没有找到这个或任何类似的功能。

如何仅针对断开连接的实体的已修改属性更新列?

最佳答案

您可以像这样更新单个属性或分离的实体:

public void ChangePassword(int userId, string password)
{
var user = new User() { Id = userId, Password = password };
using (var db = new MyEfContextName())
{
db.Users.Attach(user);
db.Entry(user).Property(x => x.Password).IsModified = true;
db.SaveChanges();
}
}

关于c# - EF 核心 : Update column only for modified properties from disconnected entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64482691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com