我试图通过使用 LinqKit强制 ef-core 参数化它认为是本文中描述的常量的值。
尝试应用github 上描述的 PredicateBuilder 示例时,出现异常。这是我的代码:
private async Task getWallets()
{
var query =
from w in _context.Wallets.AsExpandable()
where w.WalletItems.Any(hasItems().Compile())
select w;
var result = await query.ToListAsync();
}
private Expression<Func<WalletItem, bool>> hasItems()
{
var predicate = PredicateBuilder.New<WalletItem>();
var ids = new string[] { "A", "B" };
foreach (var id in ids)
{
predicate = predicate.Or(wi => wi.ExternalId == id);
}
return predicate;
}
当点击 ToListAsync() 时出现以下异常:
System.NotSupportedException:'无法解析表达式'w.WalletItems.Any(__Compile_0)':给定参数与预期参数不匹配:'System.Linq.Expressions.TypedParameterExpression'类型的对象无法转换为'System. Linq.Expressions.LambdaExpression'。
我正在使用以下包在 ASP.NET Core 2.1 应用程序 (netcoreapp2.1) 中运行代码:
- Microsoft.EntityFrameworkCore.Relational (2.1.1)
- Microsoft.EntityFrameworkCore.SqlServer (2.1.1)
- LinqKit.Microsoft.EntityFrameworkCore (1.1.15)
非常感谢任何帮助。