如何查看存储过程的结果?

时间:2017-04-11 16:45:39

标签: c# entity-framework stored-procedures

我有一个存储过程:

ALTER PROCEDURE [dbo].[GetAllAnnouncements]
AS
BEGIN
    SELECT 
        Description, DisplayStartDate, DisplayEndDate 
    FROM
        Announcements
END

我试图调用存储过程并将其作为数组返回,但是我收到错误:

  

无法隐式将MyProject.Models.GetAllAnnouncements_Result []类型转换为字符串[]

我的代码:

public string[] getAllAnnouncements()
{
    using (PerformanceReviewEntities objContext = new PerformanceReviewEntities())
    {
        var ann =  objContext.GetAllAnnouncements();
        string[] DisplayAnn = ann.ToArray();
    }
}

我知道它必须在编辑功能导入中执行某些操作,但我不知道该怎么做。我希望能够从家庭控制器运行,并在我的.cshtml页面中查看它。

enter image description here

1 个答案:

答案 0 :(得分:1)

函数import返回Announcements类型的对象集合。

当你这样称呼时:

var ann =  objContext.GetAllAnnouncements();

ann是对象的集合,而不是字符串。

这样做:

string[] DisplayAnn = ann.ToArray();

Wil失败了,因为你试图将一个对象数组分配给一个字符串数组。

您可以这样做,假设您对多个列感兴趣:

IEnumerable<Announcements> result = ann.ToArray();

并更改方法的签名以返回可枚举:

public IEnumerable<Announcements> getAllAnnouncements()

调用ToArray()以强制加载结果。如果lazing加载适合您,则不必将其投射到阵列中。有些人在关闭数据库连接后尝试使用枚举时会遇到麻烦(例如上下文已被处理)。