在Entity Framework Where子句中导入的函数?

时间:2009-06-29 16:37:02

标签: entity-framework

是否可以在实体框架的where子句中使用函数导入?我尝试了以下内容,但是我得到了一个相当神秘的例外,我找不到任何有关的信息:

var q = MyContext.MyEntities.Where("MyContext.MyFunction(it.ID)")

(该函数设置为返回布尔值)

System.Data.EntitySqlException:'MyContext.MyFunction'无法解析为有效的类型构造函数或函数。,靠近WHERE谓词,第6行,第21列。

此致

2 个答案:

答案 0 :(得分:1)

您尝试编写的查询是通过对EntitySet的查询来编写对FunctionImport的调用。

但是因为FunctionImports是StoredProcedures的包装器,它们是不可组合的,所以这不起作用。

为了使这样的东西起作用,从理论上讲,该函数需要成为可组合的东西的包装器,如TVF(表值函数)。但遗憾的是,今天的实体框架并不支持TVF。

亚历

答案 1 :(得分:-1)

我认为您不希望将此表达式作为字符串传递。你想要一个合适的lambda表达式,如:

MyContext.MyEntities.Where(entity => MyContext.MyFunction(entity.ID));