我已经向三个程序员展示了这个问题,我们都被难住了。我在 foreach 循环中调用 Sql Server 存储过程,结果始终与第一次调用相同。即使我对参数进行硬编码(删除循环),也只会将第一个结果分配给所有后续调用。
存储过程由实体框架函数导入调用(EF4 数据库首先使用设计器)。调用代码位于作为类库的存储库中。该存储库由一个单独的 Asp.net webforms 项目调用。问题代码如下所示:
IEnumerable<WorkOrder> orders = _context.GetWorkOrders(UserName, workOrder, customerCode).ToList();
OrderStatus lastStatus = new OrderStatus();
foreach (Order order in orders)
{
lastStatus = _context.GetOrderStatus(order.OrderNumber).FirstOrDefault();
order.LastOrderStatus = lastStatus.OrderStatus;
}
正如你所看到的,这是非常基本的东西。根据传入的订单号,我总是得到循环中第一个订单号的结果。我已经关闭了 Ajax(我使用的 Telerik 控件的一部分),因为这在过去给我造成了莫名其妙的错误。我真的希望您能提出一种调试此问题的方法!提前致谢。
编辑: Daniel JG 的评论让我想到了这个可能的解决方案。现在我需要弄清楚如何应用 Ladislav Mrnka 的答案......“尝试使用 MergeOption.OverwriteChanges 直接调用 ExecuteFunction。”