データベースの 2 つのテーブルをマップする 2 つのクラスがあります。
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 によってマップできるデータベース関係でリンクされていません。 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."
では、どうすれば目標を達成できるでしょうか?