Я использую EF 6.1.3 и EF DB2 6.1.0 для базы данных. Проблема в том, что EF не применяет WHERE к моему запросу. Но если я скопирую запрос из журнала, он будет работать так, как должен.
int userId = int.Parse(User.Identity.Name);
//Форматируем данные под таблицу
var tasksQuery = context.Tasks
.Where(t => t.AuthorId == 19)//HERE IS MY SIMPLE WHERE
.Select(t => new
{
Id = t.Id,
Author = t.Author.Client.LastName + " " + t.Author.Client.FirstName + " " + t.Author.Client.MiidleName,
Title = t.Title,
Type = t.Type.Id == TskTaskType.Types.Route ? t.Type.Name + "(" + t.Route.Name + ")" : t.Type.Name,
Comment = t.Chains
.Where(chain => chain.ActionId != null && chain.ActionDate == t.Chains.Max(c => c.ActionDate))
.Select(chain => chain.Comment).FirstOrDefault(),//Комментарий последнего совершенного действия
Status = t.Status.Name,
StartDate = t.StartDate,
EndDate = t.EndDate,
AuthorId = t.AuthorId
});
var recordsTotal = tasksQuery.Count();
Первый случай (неправильный ответ): SQL (копирование sql клиент дает правильное количество = "1"):
Второй случай (Правильный, но я удалил опору автора из проекции. Мне это нужно, так что это не мое решение): SQL:
Третий случай (правильный, но идентификатор пользователя жестко закодирован Так что это тоже не решение): SQL такое же, как в первом случае, за исключением того, что у него нет таких параметров, как "@ p__linq__0", его значение равно жестко запрограммирован в запросе sql.
Помогите мне, пожалуйста, похоже на ошибку.