在Entity Framework中添加存储过程复杂类型

Kav*_*tha 34 c# stored-procedures entity-framework-4 silverlight-4.0

我试图在Entity Framework中使用一个不返回任何内容的存储过程.

我做了以下事情:

  1. 添加了一个功能(右键单击存储过程 - >添加 - >功能导入 - >复杂类型 - >获取列信息 - >创建新复杂类型)

  2. 我的功能名称:summarySP_Result.构建项目后,实体类不会在Generated_code(BusinessAccount.web.g.cs)中生成

但是表和视图的实体类都是创建的,但也不是存储过程.

任何人都可以提出为什么它不是生成实体类的想法BusinessAccount.web.g.cs

更新:

让我确认ReturnDataFromTemTable_resultXXXXXX.web.g.cs班级中创建的实体课程.

喜欢 :

[DataContract(Namespace="http://schemas.datacontract.org/2004/07/BizFramework.Web.Model")]
public sealed partial class ReturnDataFromTemTable_Result : Entity
{
   -------------------
 }
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 66

好的 - 这是逐步实现此目的的方法:

(1)将您的存储过程添加到EDMX文件中(首次创建时,或稍后使用Update model from database并选择该存储过程)

(2)一旦你的模型中有存储过程 - 使用Model Browser添加Function Import:

在此输入图像描述

(3)在弹出的下一个对话框是非常重要的 - 你需要(1)定义一个存储过程返回复杂类型的集合,那么你就需要(2)得到该存储过程的列信息,以了解哪些列它将返回,然后(3)您告诉Visual Studio基于该列信息生成新的复杂类型:

在此输入图像描述

(4)一旦你完成了 - 你现在应该在模型浏览器的概念模型部分中看到存储过程,并且新生成的复杂类型也应该显示在那里:

在此输入图像描述

  • 即使我强制我的SP返回一些列后,获取列信息也无法工作.我想念一些东西吗? (6认同)

Chr*_*ckx 14

如果仍未解决此问题,请在添加功能导入后转到解决方案资源管理器,右键单击您的{name} .Context.tt文件并执行"运行自定义工具".该方法现在将显示在派生的Context类中.

在此输入图像描述

这似乎是在Visual Studio 2012,这是我用的,我没有应用更新1中的错误,我会尝试看看能否解决.


San*_*eep 12

这是罗斯布里戈利

尝试将此行添加到存储过程的开头:

SET FMTONLY OFF您可以在导入完成后将其删除.

来源: - 为什么Entity Framework不能查看我的存储过程的列信息?