我有一個在這個小提琴中的 Linq to Objects 中作業正常的查詢:
var list = from order in orders
join detail in details
on order.id equals detail.order into od
select new { order = order, details = od };
當資料位于資料庫中時,我嘗試應用相同的查詢(注意我手動將 Linq 映射到 Sql):
public class dbContext: DbContext {
public DbSet<Order> Orders { get; set; }
public DbSet<Detail> Details { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder oB) {
oB.UseSqlServer("...connection string...");
}
}
using (var db = new dbContext() {
var list = from order in db.Orders
join detail in db.Details
on order.id equals detail.order into orderDetails
select new { order = order, details = orderDetails };
}
以上給出:
無法翻譯。以可翻譯的形式重寫查詢,或通過插入對“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的呼叫,顯式切換到客戶端評估。有關詳細資訊,請參閱https://go.microsoft.com/fwlink/?linkid=2101038。
我details = orderDetails.ToList()在最后一行嘗試過,但存在同樣的錯誤。我應該在哪里添加手動客戶評估?
一些背景資訊:以下資料庫查詢(沒有into)作業正常:
var list = from order in db.Orders
join detail in db.Details
on order.id equals detail.order
select new { order = order, detail = detail };
uj5u.com熱心網友回復:
您應該宣告Navigation Properties并使用類似的內容,而不是加入:
var query = from order in db.Orders
select new { order = order, details = order.OrderDetails };
var list = query.ToList();
或者干脆
var list = db.Orders.Include(o => o.OrderDetails).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/356462.html
標籤:实体框架
