无法使用 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();
我用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();