我只是想知道是否有任何已知问题,或者我是否做错了什么。每次我做类似下面的例子时,我都会收到错误“服务器无法恢复交易”。
我已经问过另一个关于此错误的问题,但现在我发现它只出现在foreach
循环中
//Listing orders
IQueryable<Order> ordersList = ListOrders();
foreach (Order order in ordersList)
{
if (order.Client_Id != null) //get the exception here.
{
//some code
}
}
更新:ListOrders()的代码
public IQueryable<Order> ListOrders()
{
try
{
return from o in db.Orders
where o.Id == this.Id
select o;
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}
答案 0 :(得分:0)
您的Client_Id是否是一个延迟加载属性?
if (order.Client_Id != null)
检查实际上是在进行某种数据库操作吗?
答案 1 :(得分:0)
在不知道如何处理数据库上下文的情况下,很难确定您是否正确使用了上下文,可能会遇到各种问题。要验证这一点,您可以从列表顺序方法返回IList,如果返回错误并且foreach按预期工作,则很可能与您管理Context的方式有关。
public IList<Order> ListOrders()
{
try
{
return (from o in db.Orders
where o.Id == this.Id
select o).ToList();
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}
答案 2 :(得分:0)
你可以这样做:
IQueryable<Order> ordersList = ListOrders().where(t=>t.Client_Id != string.Empty);