哪里需要客户评价?
Where is client evaluation needed?
我有一个查询在 Linq to Objects 中运行良好 fiddle:
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 };
}
以上给出:
could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
我在最后一行尝试了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 };
您应该声明 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();
我有一个查询在 Linq to Objects 中运行良好 fiddle:
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 };
}
以上给出:
could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
我在最后一行尝试了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 };
您应该声明 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();