我想只从一个客户端获取来自数据库的3张发票。 下面的代码没有给我3个结果(但抛出异常)。
例外: Include路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性。参数名称:路径
有一个客户可以有多个发票,一个发票可以有多个InvoiceLines。
我想检索一个包含3个发票和相关InvoiceLines的客户。
我在这里做错了什么?
public async Task<Client> Client(int id)
{
using (var db = GetContext())
{
return await db.Client.Include(x => x.Invoices.Take(3))
.Where(i => !i.IsDeleted)
.Include(c => c.Invoices.Select(x => x.InvoiceLines))
.Where(x => x.Id == id)
.FirstOrDefaultAsync();
}
}
答案 0 :(得分:0)
我认为.Include
不能用于过滤 out 记录。
我没有足够的代码来验证这是否符合您的要求,但我认为您可以在不使用.Include
的情况下做您想做的事。
var client = await db.Client
.Where(i => !i.IsDeleted)
.FirstOrDefaultAsync(x => x.Id == id);
var top3Invoices = client.Invoices.Take(3);