是否可以在实体框架的where子句中使用函数导入?我尝试了以下内容,但是我得到了一个相当神秘的例外,我找不到任何有关的信息:
var q = MyContext.MyEntities.Where("MyContext.MyFunction(it.ID)")
(该函数设置为返回布尔值)
System.Data.EntitySqlException:'MyContext.MyFunction'无法解析为有效的类型构造函数或函数。,靠近WHERE谓词,第6行,第21列。
此致
利
答案 0 :(得分:1)
您尝试编写的查询是通过对EntitySet的查询来编写对FunctionImport的调用。
但是因为FunctionImports是StoredProcedures的包装器,它们是不可组合的,所以这不起作用。
为了使这样的东西起作用,从理论上讲,该函数需要成为可组合的东西的包装器,如TVF(表值函数)。但遗憾的是,今天的实体框架并不支持TVF。
亚历
答案 1 :(得分:-1)
我认为您不希望将此表达式作为字符串传递。你想要一个合适的lambda表达式,如:
MyContext.MyEntities.Where(entity => MyContext.MyFunction(entity.ID));