【问题标题】:How to change the value of a tables attribute using LINQ/LAMBDA?如何使用 LINQ/LAMBDA 更改表属性的值?
【发布时间】:2020-10-02 14:30:12
【问题描述】:

我有一个order表和一个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-framework linq lambda


    【解决方案1】:

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

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

    【讨论】:

    • 这很好用——谢谢。虽然在第一行,x.Status 需要是 x.StatusID。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多