У меня есть два класса, которые сопоставляют две таблицы моей базы данных:
public class Product
{
public int Id { get; set; }
public string Token { get; set; }
public string Name { get; set; }
public decimal Value { get; set; }
}
public class Ticket
{
public int Id { get; set; }
public string SerialNumber { get; set; }
public string ProductToken { get; set; }
public Product Product { get; set; }
}
По некоторым причинам домена продукт и билет логически связаны, другими словами, они не связаны в отношениях с базой данных, которые могут быть сопоставлены EF, они будут связаны в моем приложении с запросом linq, который «должен» быть переведен в Внешнее левое соединение SQL. Отсюда я сделал следующий запрос:
IQueryble<Ticket> query = from ts in context.Tickets
join ps in context.Products
on ts.ProductToken equals ps.Token into p
select new Ticket
{
Id = t.Id,
SerialNumber = t.SerialNumber,
ProductToken = t.ProductToken,
Goal -----> Product = p.FirstOrDefault()
};
Запрос сохраняется как IQueryble, потому что после этого запрос продолжает уточняться с помощью фильтра.
Проблема в том, что я запускаю следующий код:
var tickets = query.OrderBy(t => t.SerialNumber).ToList();
Получила следующую ошибку:
"The entity or complex type 'Model.Ticket' cannot be constructed in a LINQ to Entities query."
Итак, как я могу достичь своей цели?