大家好 使用 EF4,我可以使用像这样的小片段将 EDMX 函数(使用“从数据库更新模型”并从列表中添加存储过程)映射到 linq 方法
[EdmFunction("MYPROJECT.Store", "Foo")]
public Decimal Foo(Int32 Id)
{
throw new NotSupportedException("Not direct access possible, use with E-SQL or LINQ");
}
但这似乎不适用于 EF 4.1
我发现存储过程不适用于 Code First。 我正在使用 DbContext,我不能这样做是否正常?
如果是,我怎样才能让我的存储过程正常工作?
提前致谢:-)
最佳答案
这只是 EDMX 相关的功能,如果没有 EDMX,您不能将它与 DbContext API 代码优先/流畅的 API 一起使用。顺便提一句。你的意思是 SQL 函数而不是存储过程,因为导入的存储过程导致函数导入并且不能在 Linq 查询中调用。用 EdmFunction
标记的方法说明导入的 SQL 函数和模型定义的函数。
是的,我知道,SQL 函数出现在导入向导中的存储过程分支下,但这只是 EDMX 设计器的“功能”。
因为您使用的是数据库优先的 DbContext API 和 EDMX 文件,所以您应该能够毫无问题地使用 EdmFunction
。我刚刚测试了它。问题可能是您用 EdmFunction
属性标记的代理方法不是静态的 - 它必须是静态的。
关于c# - 从 LINQ 调用存储过程(使用 dbcontext),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5732971/