Расхождение в подсчете Entity Framework - PullRequest
2 голосов
/ 21 января 2012

Я немного новичок в Entity Framework (4).Я выслеживал ошибку в нашем программном обеспечении и прибегал к ее устранению.Мне любопытно, может кто-нибудь помочь мне объяснить, почему эти два счета (dataCount и data2Count) будут разными в зависимости от того, как я их вызывал.data2Count верен и фактически совпадает с тем, что есть в SQL.

        using (var context = new Entities(ConnectionString))
        {
            var startDateTime = DateTime.Parse("10/1/2011");
            var endDateTime = DateTime.Parse("12/31/2011 23:59");

            var query = from data in context.vDATA
                        where data.ParentId == parentId &&
                        data.TimeStamp >= startDateTime &&
                        data.TimeStamp <= endDateTime
                        select data;

            var data = query.ToList();
            var dataCount = data.Where(x => x.TestType == 20).Count();
            //dataCount is 162

            var data2 = query.Where(x => x.TestType == 20);
            var data2Count = data2.Count();
            //data2Count is 198
        }

Спасибо.

Ответы [ 2 ]

1 голос
/ 21 января 2012

Хорошо, я думаю, что нашел и исправил то, что происходило - хотя я не уверен, что могу внутренне объяснить, как EF справляется с этим ... Я нашел статью здесь: Несоответствие результата структуры сущностей для представлений базы данных это звучало как похожая проблема.Мои данные в SQL имели несколько записей, чьи поля были примерно идентичны.Единственным отличительным полем был TestType.Но это НЕ было помечено как часть ключа.Простое расширение ключа для включения этого поля привело к правильному совпадению графов.

0 голосов
/ 21 января 2012

Как устанавливается parentId? Является ли переменная, объявленная вне цикла, в которой выполняется этот фрагмент кода? Если так, то это может показаться странным из-за проблем с закрытием. Этот другой вопрос дает вам много информации о том, как решать проблемы с закрытием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...