存储过程未出现在 EF 代码中

Posted

技术标签:

【中文标题】存储过程未出现在 EF 代码中【英文标题】:Stored procedure not appearing in EF code 【发布时间】:2012-06-25 13:16:33 【问题描述】:

我首先使用的是 EF 数据库,并向数据库添加了一个存储过程。

当我在 edmx 文件上运行 Update model from database 时,它获取了存储过程,我选择了它作为我想要包含的项目。

我有一个名为Model<projectname>.Context.cs 的文件,其中有一个名为Entities 的类。这是一个自动生成的类,它包含系统中其他存储过程的方法。我的新存储过程在此类中没有相应的方法,运行Run custom tool 也无济于事。

还有什么我需要做但我没有做的事情吗?

谢谢,

萨钦

【问题讨论】:

【参考方案1】:

EDMX 不支持表值参数。因此,如果您的 proc 使用 TVP 作为参数,则 EDMX 设计人员无法选择它。

已编辑:

如果您想检索结果集并为 proc 创建 object/POCO,那么只需删除 tvp,编译 proc,让 EDMX 设计人员获取您的 proc,生成结果对象,然后添加 tvp回到你的过程。这是欺骗 EDMX 设计人员并获得所需内容的一种非常简单的方法。

【讨论】:

【参考方案2】:

确保您正在对 *Model.CONTEXT.tt 文件执行“运行自定义工具”。

【讨论】:

以上是关于存储过程未出现在 EF 代码中的主要内容,如果未能解决你的问题,请参考以下文章

EF执行存储过程时超时问题

EF中存储过程的输出参数

动态存储过程和 EF4.1

EF中存储过程的使用

EF 存储过程(下)

EF 6 数据库优先:如何更新存储过程?