保存SELECT存储过程ASP.NET实体框架的结果

时间:2013-10-09 14:16:46

标签: c# asp.net sql-server stored-procedures

我正在网上搜索这个问题的答案,我已经做得很短。我有一个简单的存储过程,从视图中选择列,我想将这些数据保存在我的程序中的模型中。但是,当我调用存储过程时,它有一个返回类型的ObjectResult,所以我一直在尝试实现这个,但我不知道在我的模型中使用什么数据类型。

CREATE PROCEDURE [dbo].[GetPartnerCompanyRelationships]
    @inputCoid INT
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT [CoId]
      ,[CompanyName]
      ,[CompanyId]
      ,[PartnerCoId]
      ,[PartnerCompanyName]
      ,Count(*) as DocumentTotal
  FROM vwDocuments 
  where coid = @inputCoid and DocumentType = 'order' and PartnerCoId <> @inputCoid
  group by [CoId]
      ,[CompanyName]
      ,[CompanyId]
      ,[PartnerCoId]
      ,[PartnerCompanyName]
union all
SELECT [CoId]
      ,[CompanyName]
      ,[CompanyId]
      ,[PartnerCoId]
      ,[PartnerCompanyName]
      ,Count(*) as DocumentTotal
  FROM vwDocuments 
  where PartnerCoId = @inputCoid and DocumentType = 'order' and CoId <> @inputCoid
  group by [CoId]
      ,[CompanyName]
      ,[CompanyId]
      ,[PartnerCoId]
      ,[PartnerCompanyName]

END

该程序只选择这些列。

我希望我的模型能够保存这些数据,以便我可以在View中引用它并从中构建一个表,但问题是保存这些数据。

public ObjectResult GetPartnerCompanyRelationships(int coid)
        {
            using (var context = LTPortalEntities.getEntities())
            {
                ObjectResult x = context.GetPartnerCompanyRelationships(coid);
                return x;
            }
        }

这是我在datahelper类和Controller中尝试过的:

var companyList = _da.GetPartnerCompanyRelationships(coid);
                    foreach (vwDocument item in companyList)
                    {
                        MyDashBoard.CompanyList.Add(item);
                    }

如果这很模糊,请告诉我要包含的内容,这是我第一次使用存储过程获取信息。

我遇到的另一个问题是尝试使用视图中的select来ORDER BY,我的程序不太喜欢。所以我想知道创建一个函数会更容易吗?如果是这样,如何进入edmx。

1 个答案:

答案 0 :(得分:1)

我不知道存储过程向我的数据类添加了一个对象 我只需要用:

更新我的模型
 public List<GetPartnerCompanyRelationships_Result> DashboardCompanyList { get; set; }

使用以下命令更新我的DBHelper:

public List<GetPartnerCompanyRelationships_Result> GetPartnerCompanyRelationships(int coid)
        {
            using (var context = Entities.getEntities())
            {
                var x = context.GetPartnerCompanyRelationships(coid);
                return x.ToList();
            }
        }

从我的控制器调用该方法:

MyDashBoard.DashboardCompanyList = _da.GetPartnerCompanyRelationships(coid);

这使我可以使用模型中的所有复杂数据。