使用枚举器仍会导致对数据库的多次命中

时间:2015-02-17 14:59:45

标签: c# iqueryable

我有一段看起来像这样的代码:

        var schedEvents = _dataContext.ScheduledEvents.Where(se => eventParents.Contains(se.HierarchyItem.Id));
        var schedEventsEnum = schedEvents.GetEnumerator();
        while (schedEventsEnum.MoveNext())
        {
            string eventID = schedEventsEnum.Current.Id.ToString();
            string eventName = schedEventsEnum.Current.EventName.ToString();

            jsonStr += "{ \"id\" : \"" + eventID + "\", \"text\" : \"" + eventName + "\"},";
        }

eventParents在此之前构建,但它只是用于比较的分层项ID的列表(目的是查找该列表中ID的子项的所有事件)。这部分似乎工作正常。代码的第一行命中数据库一次,并提取我想要的一切。但是,一旦它到达GetEnumerator部分,它就会再次启动数据库,这是我试图避免的。但我不确定为什么会发生这种情况。

我之前在代码中做的基本相同的事情是通过Hierarchical项目,它只是命中db一次所以我不确定为什么让这个的枚举器可能不同。< / p>

0 个答案:

没有答案