无法使用 EF 中的存储过程获取所有记录

Can't Get ALl Records with Stored Procedure in EF

我用Entity Framework5。在我的项目中,我创建了一个用于获取所有记录的存储过程并将其添加到 Entity Framework.

我想获取所有记录,但是存储过程 returns 一个 int.

当我想用这个存储过程获取所有记录,并使用 foreach 遍历它们时

C# 代码:

using (var context=new AngularJsEntities())
{
            foreach (comment item in context.SelectAllComments())
            {
               // do something
            }
}

我该怎么做?

我在 google 搜索,但找不到有用的结果。

我的存储过程代码:

create procedure SelectComments
AS
Begin
   select CommentBody, Name, Email, Id 
   from comments
end

求解后:

您很可能使用了 Database.ExecuteSqlCommand 而不是 Database.SqlQuery<T>。前者 returns int 仅对 SQL 没有 return 数据(更新、删除等)的查询有用,而后者 return s DbRawSqlQuery<T>。例如,您的 SelectAllComments 方法应该执行如下操作

var comments = context.Database.SqlQuery<Comment>("exec SelectComments").ToList();