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

标签 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,我不能这样做是否正常?

如果是,我怎样才能让我的存储过程正常工作?

提前致谢:-)

最佳答案

这只是 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/

相关文章:

c# - 多个数据库的代码优先迁移?

entity-framework - 保存时忽略可选列

c# - 系统.Data.SqlClient.SqlException : login failed for user '......'

c# - 为什么在 WebAPI POST 方法中使用 CreatedAtAction 返回对象?

c# - Caliburn Micro WPF 窗口管理

entity-framework - EF 代码优先 : Primary Key same as Foreign Key

sql-server - 当我使用可变参数而不是常量参数时,为什么我的内联表 UDF 慢得多?

asp.net-mvc - 如何从数据库检索 VarBinary 图像到 MVC View

c# - 编写谓词以使用 Entity Framework 搜索存储库时出现问题(相当于在 SQL 中使用 Join)

c# - 如何获取集合的空列表?