Linq EF4延迟加载-如何强制加载?
我有以下代码:Linq EF4延迟加载-如何强制加载?,linq,entity-framework-4.1,lazy-loading,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)
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;
}
}
我知道这是由于延迟加载造成的,它正在尝试加载,因为上下文已经关闭(通过使用超出范围)
我的问题是如何在退出方法之前强制加载
我最初是这样做的
return ret.ToList<RMAInfo>();
返回ret.ToList();
这很好,但我不确定这是正确的还是最好的方法?这很好,可以接受。
query.ToList()代码>是强制加载结果的正确方法。否则您将如何强制对linq查询进行求值?不确定。这就是我问的原因。它也可以通过新列表(IEnumerable)
强制执行。。。在这种情况下我不会使用它。作为一种风格,我会在using
块之前将ret
声明为List
,在using语句中使用ret=(from….ToList()
分配它,然后在处理上下文后返回它。这可能没有什么区别,但它看起来更清晰,更易于维护。
return ret.ToList<RMAInfo>();