gpt4 book ai didi

c# - LinqKit 与 'Method cannot be translated into a store expression' 异常

转载 作者:太空宇宙 更新时间:2023-11-03 16:14:07 24 4
gpt4 key购买 nike

我正在使用 LinqKit,我想编写一个谓词,其中代码必须调用一个普通的 bool 方法,如下所示:

var predicate = PredicateBuilder.False<MyEntity>();

var predicate = predicate.And(myEntity => this.EntityMatches(myEntity));

this.ObjectSet.AsExpandable().Where(predicate).ToList();

这是(部分)EntityMatches 方法:

private bool EntityMatches(MyEntity myEntity)
{
bool isMatch;

// I make a call to another library boolean method here.
isMatch = otherLib.IsEntityMatch(myEntity);

// I perform some other checks right after.
isMatch &= // some other conditions ...

return isMatch;
}

运行延迟执行时出现此异常:

LINQ to Entities does not recognize the method 'Boolean EntityMatches(MyEntity)' method, and this method cannot be translated into a store expression.

如何重写 EntityMatches 方法,以便商店提供者能够理解它?

最佳答案

LinqKit 并不神奇,它看不到 EntityMatches()otherLib.IsEntityMatch() 的内部,所以它无法帮助您将它们翻译成SQL。

LinqKit 可以用简单的部分创建复杂的条件。但是每个简单的部分都必须自己翻译成 SQl,我看不出在你的情况下如何做到这一点,特别是因为你正在使用一些外部库。

关于c# - LinqKit 与 'Method cannot be translated into a store expression' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16319520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com