使用时结果未就绪,在调试器中工作但在运行时不工作

时间:2013-09-19 07:16:17

标签: entity-framework asp.net-mvc-4 entity-framework-5

在下图中,您可以看到我放置断点的位置,然后调试两步。您还可以看到两个作业都很有效,它们具有相同的计数并且是相同的。

This works

但是,如果我执行以下操作。运行完全相同的调用,但只在第三行直接中断,然后才开心

This does NOT work

set.QuestionSet.Questions在分配之前应该有8个计数,因此它似乎由于某种原因没有正确分配。我怀疑这与我如何从数据库中获取数据有关。

问题和问题集是普通的POCO,这是整个方法的代码。

    public IEnumerable<QuestionSet> SearchAndFilterQuestionsAndSets(string searchString, int nrPerPage, int page, out int totalSearchCount)
    {
        searchString = searchString.ToLower();
        List<QuestionSet> finalList = new List<QuestionSet>();

        var result = ActiveContext.QuestionSets
        .Select(x => new
        {
            QuestionSet = x,
            Questions = x.Questions.Where(
                y =>
                    y.Description.ToLower().Contains(searchString)
            ).OrderBy(
                z => z.Description
            )
        })
        .ToList();

        foreach (var set in result)
        {
            //If our search matched the set itself we load all questions
            if (set.QuestionSet.Name.ToLower().Contains(searchString))
            {
                //we dont bring empty sets
                if (set.QuestionSet.Questions.Count() > 0)
                {
                    set.QuestionSet.Questions = set.QuestionSet.Questions.ToList<Question>().OrderBy(x => x.Description).ToList<Question>();
                    finalList.Add(set.QuestionSet);
                }
            }
            //We had one or more questions matching the search term
            else if (set.Questions.Count() > 0)
            {
                var b = set.Questions.ToList<Question>();
                set.QuestionSet.Questions = set.Questions.ToList<Question>();
                finalList.Add(set.QuestionSet);
            }
        }

        totalSearchCount = finalList.Count();
        return finalList.Skip((page - 1) * nrPerPage).Take(nrPerPage);
    }

更新

如果我在失败的其他情况下执行此操作

var a = new QuestionSet();
a.Id = set.QuestionSet.Id;
a.Name = set.QuestionSet.Name;
a.Questions = set.Questions.ToList<Question>();
finalList.Add(a);

然后它工作,所以问题在于匿名对象,但是为什么当我逐步调试而不是其他?叫我困惑。

1 个答案:

答案 0 :(得分:0)

可能与匿名类型的后期绑定有关