从LINQ调用存储过程(使用dbcontext)

时间:2011-04-20 15:36:58

标签: c# entity-framework sql-server-2008 asp.net-mvc-3 entity-framework-4.1

各位大家好 使用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,我不能这样做是正常的吗?

如果是,我如何使我的存储过程正常工作?

提前感谢: - )

1 个答案:

答案 0 :(得分:1)

这只是与EDMX相关的功能,如果没有EDMX,您不能将它与DbContext API代码第一个/流畅的API一起使用。顺便说一句。你的意思是SQL函数而不是存储过程,因为导入的存储过程导致函数导入,并且无法在Linq查询中调用。标有EdmFunction的方法表示导入的SQL函数和模型定义的函数。

是的我知道,SQL函数出现在导入向导的存储过程分支下,但这只是EDMX设计器的“功能”。

因为您在DbContext API和EDMX文件中使用数据库优先,所以您应该可以毫无问题地使用EdmFunction。我刚试过它。问题可能是标有EdmFunction属性的代理方法不是静态的 - 它必须是静态的。

相关问题