各位大家好 使用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,我不能这样做是正常的吗?
如果是,我如何使我的存储过程正常工作?
提前感谢: - )
答案 0 :(得分:1)
这只是与EDMX相关的功能,如果没有EDMX,您不能将它与DbContext API代码第一个/流畅的API一起使用。顺便说一句。你的意思是SQL函数而不是存储过程,因为导入的存储过程导致函数导入,并且无法在Linq查询中调用。标有EdmFunction
的方法表示导入的SQL函数和模型定义的函数。
是的我知道,SQL函数出现在导入向导的存储过程分支下,但这只是EDMX设计器的“功能”。
因为您在DbContext API和EDMX文件中使用数据库优先,所以您应该可以毫无问题地使用EdmFunction
。我刚试过它。问题可能是标有EdmFunction
属性的代理方法不是静态的 - 它必须是静态的。