Я работал над проблемой, возникающей при использовании LINQ to Entities при использовании замыканий.
Очевидно, L2E не поддерживает замыкания. Значение:
var users = from user in UserRepository.FindAll()
select new UserDTO
{
UserId = user.UserId,
Tickets = from ticket in TicketRepository.FindAll()
where ticket.User == user
select new TicketDTO
{
TicketId = ticket.TicketId
}
};
(ПРИМЕЧАНИЕ. Условие "где" - это проблема, в которой существует проблема. Мне не разрешено сравнивать сущность с другой сущностью, поскольку они не являются примитивными типами EF. Допускаются только такие вещи, как Int32, Guid и т. Д.) 1006 *
, недопустимо, потому что я не могу сравнить 'ticket.User' с 'user'
Это просто пример моей проблемы, и я понимаю, что могу сравнить по Id, поскольку это примитивный тип, а не замыкание.
На самом деле мой сценарий намного сложнее, чем этот, но это сценарий, который мне нужно решить на данный момент.
Обходной путь, который я нашел в Интернете, использует подзапрос. Это работает, но для моего сценария это не очень эффективно.
Вопрос:
Кто-нибудь из вас знает, если:
- Entity Framework 4 будет поддерживать замыкания в LINQ для сущностей?
- Есть лучшее решение этой проблемы, чем использование подзапросов?
- Будем весьма благодарны за любые дополнительные знания по этой теме!