0
我有兩個類映射我的數據庫的兩個表:左外連接的實體(實體或複雜類型不能在LINQ到實體查詢構造。)
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; }
}
對於某些領域的原因,Product和Ticket在邏輯上是鏈接的,換句話說,它們沒有鏈接到可以由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."
那麼,怎樣才能達到我我的目標?
不錯的作品,只是一個注意事項,你錯過了序號:) – mattytommo 2012-04-17 17:02:14
我不明白爲什麼我有創建一個與POCO類相同的新類,並且如果您在選擇返回中創建「new myTicket」,爲什麼IQueryble保持相同(Ticket),它將運行,需要一些轉換? – 2012-04-17 17:04:50
@ViniciusOttoni,IQueryable是一個錯字,它應該是myTicket那裏,你不能投影到映射實體的原因是因爲一個實體代表一個數據庫表。使用項目你選擇了一部分表格(一些列),這對於數據來說是無效的狀態 –
Habib
2012-04-17 17:07:26