首页 > 解决方案 > 如何使用 LINQ/LAMBDA 更改表属性的值?

问题描述

我有一个订单表和一个 orderStatus 表,它们的关系如下所示:

在此处输入图像描述

我希望能够使用操作结果中的 lambda 表达式将特定订单的“StatusID”更改为值 2(我能够获取特定订单 ID,并将其加载到整数变量中) - 会有有什么简单的方法吗?

到目前为止,我已经尝试过:

//get specific order ID
int currentOrderId = newConfirmedOrderLine.OrderID;

//-----
Order statusChange = new Order();
statusChange.OrderStatus.StatusID = 2;
DBAccessor.SaveChanges();

我是 linq 和 lambda 的新手,所以任何带有答案的解释都将不胜感激!

标签: entity-frameworklinqlambda

解决方案


如果DBAccessor是 DbContext 那么这可以/应该工作。您需要Order从 DbSet 加载要更改的实体,DBAccessor.Order通过设置属性对其进行更改,然后调用 SaveChanges。

var orderStatus = DBAccessor.OrderStatus.First(x => x.StatusID == 2);
var order = DBAccessor.Order.Find(currentOrderId);
order.OrderStatus = orderStatus;
DBAccessor.SaveChanges();

推荐阅读