EF4延迟加载 - 如何强制加载?

时间:2011-09-20 00:07:47

标签: linq entity-framework-4.1 lazy-loading

我有以下代码:

    public IEnumerable<RMAInfo> GetAllRMAsByReseller(string resellerID)
    {
        using (RMAEntities context = new RMAEntities())
        {

            IEnumerable<RMAInfo> ret = from r in GetRMAInfos_Internal(context)
                                       where r.ResellerID.ToUpper().Trim() == resellerID
                                       select r;

            return ret;
        }
    }

当我尝试访问返回值时,我得到预期的错误:

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection. 

我知道这是因为延迟加载而发生的,现在它正在尝试加载上下文(通过使用超出范围)。

我的问题是在退出方法之前如何强制加载?

我最初做的就像

return ret.ToList<RMAInfo>();

这很好,但我不确定这是正确的还是最好的方法呢?

2 个答案:

答案 0 :(得分:2)

query.ToList();是强制加载结果的正确方法。你还怎么强制评估linq查询?

答案 1 :(得分:1)

这很好并且被接受了。