Sql server 调用存储过程(MVC4)

Sql server 调用存储过程(MVC4),sql-server,asp.net-mvc,vb.net,entity-framework,razor,Sql Server,Asp.net Mvc,Vb.net,Entity Framework,Razor,(使用MVC4 VB EF4 MSSQL剃须刀) 我在MS SQL 2008数据库中创建了一个存储过程。然后,我将该SP添加到实体框架模型中(打开.edmx文件后,您不会看到它,我在打开模型浏览器时会看到SP)。接下来我做了一个“添加函数导入…”。我做了[获取列信息]和“创建新的复杂类型” 所以现在我想使用这个SP。使用ExecuteStoreQuery似乎是一个不错的选择 迄今为止,最好的尝试是: Function Index() As ViewResult Dim context As N

(使用MVC4 VB EF4 MSSQL剃须刀)

我在MS SQL 2008数据库中创建了一个存储过程。然后,我将该SP添加到实体框架模型中(打开.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


那么我必须更改什么呢?

标准的Generated列表视图从以下内容开始:

@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