![](/img/trans.png)
[英]EF Core disconnected update of collection navigation properties via full replacement
[英]EF Core : Update column only for modified properties from disconnected entity
我正在将 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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.