我正在测试谓词构建器,我收到此错误
LINQ to Entities不支持LINQ表达式节点类型“Invoke”。 这是我的代码
public partial class Product
{
public static Expression<Func<UserAddress, bool>> IsSelling()
{
return p => p.ispeacc == true;
}
}
public partial class Product
{
public static Expression<Func<UserAddress, bool>> ContainsInDescription()
{
var predicate = PredicateBuilder.New<UserAddress>();
predicate = predicate.Or(p => p.accNumber == "i****");
return predicate;
}
}
public class Accounts
{
public UserAddress GetAccount()
{
var repositoryUAdd = new Repository<UserAddress>();
var ispor = Product.IsSelling();
var acc = Product.ContainsInDescription();
UserAddress accInforesult = repositoryUAdd.GetEntitybybool(ispor.And(acc));
return accInforesult;
}
}
public T GetEntitybybool(
Expression<Func<T, bool>> filter)
{
return DbSet.Where(filter).DefaultIfEmpty(null).FirstOrDefault();
}
知道我做错了什么
答案 0 :(得分:0)
LinqKit的var result="somedata \(fun) more data \(tempvalue)";
类与EF不直接兼容。因此,您要么切换到另一个没有此类问题的谓词构建器库(例如Universal PredicateBuilder或我自己PredicateBuilder
的答案,或者如果您想继续使用LinqKit,然后在结果谓词上使用PredicateUtils
自定义方法:
Expand
查询源上的或 UserAddress accInforesult = repositoryUAdd.GetEntitybybool(ispor.And(acc).Expand());
:
AsExpandable