调用存储过程(MVC4)

时间:2012-01-14 18:14:55

标签: sql-server asp.net-mvc vb.net entity-framework razor

(使用MVC4 VB EF4 MSSQL Razor)

我在MS SQL 2008数据库中创建了一个存储过程。然后我将SP添加到Entity Framework模型中(在打开.edmx文件后没有看到它,我在打开模型浏览器时看到SP)。接下来我做了一个“添加功能导入...”。我做了[获取列信息]和“创建新的复杂类型”。

所以现在我想使用那个SP。使用ExecuteStoreQuery似乎还有很长的路要走。

到目前为止,最好的尝试是:

Function Index() As ViewResult
 Dim context As New MyEntities
 Dim Result
 ' Call the SP with parameter "A"
 Result = context.ExecuteStoreQuery(Of MySP_Result)("MySP @p0", "A").ToList
 Return View(Result)
End Function

其中“MySP_result”是SP返回的复杂类型的名称(我在EF模型浏览器中看到它)。按下F5后,我得到:

  

传递到字典中的模型项是类型的   System.Collections.Generic.List,   但是这个字典需要一个类型的模型项   System.Collections.Generic.IEnumerable

那么我需要改变什么?

1 个答案:

答案 0 :(得分:0)

标准的基因处理列表视图以:

开头
@ModelType Mvc4App2.[classname]

我花了一段时间才能正确理解错误消息。你需要将该行改为:

@ModelType IEnumerable(Of Mvc4App2.[name of the complex type])

我还稍微更改了控制器代码:

Dim context As New [Name of the EF model]
Dim Result As List(Of [name of the complex type])
Result = context.ExecuteStoreQuery(Of [name of complex type])_
               ("[name of the stored procedure @p0", "[parameter 0]").ToList
Return View(Result)       
End Function