EntityFramework 4查询"有时"失败

时间:2017-06-12 10:06:34

标签: c# entity-framework entity-framework-4 dbcontext

我正在调查我的网络服务中一个棘手的重现错误。我已通过以下流程证明查询失败:

Item c = _itemRepository.GetByCode(code);
if (c == null)
    // this line was hit.
    throw new Exception("invalid code");

指定的代码在"失败的流"期间有效,并且当使用相同的参数再现时,查询运行正常。我怀疑是,由于某些原因,由于服务器资源有限或数据库引擎繁忙,查询无法找到相关内容。我想到了可能的到期超时,但在这种情况下,应该直接从GetByCode调用抛出异常。相反,代码执行正常(大约100毫秒)并返回null Item。同样,我100%肯定所提供的参数是合法的并且调用应该成功:使用相同参数进行的其他调用运行良好。

存储库在其构造函数中存储私有_db DBContext。下面的被调用方法直接在上下文实例上运行。

public Item GetByCode(string itemCode)
{
    return _db.Items
        .Include("Field1")
        .Include("Field2")
        .SingleOrDefault(p => p.ItemCode == itemCode && p.Field1.IsReady);
}

我正在使用EntityFramework 4.0。对于可能发生的事情的任何想法都表示赞赏。

0 个答案:

没有答案