0

我正在网上搜索这个问题的答案,但我没有找到答案。我有一个从视图中选择列的简单存储过程,我想将此数据保存在程序中的模型中。但是,当我调用存储过程时,它的返回类型为 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

该过程只是选择这些列。

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

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);
                    }

如果这含糊不清,请告诉我要包括什么,这是我第一次使用存储过程获取信息。

我遇到的其他问题之一是尝试从视图中选择 ORDER BY,我的程序不太喜欢这样。所以我想知道创建一个函数是否会更容易?如果是这样,如何将其放入 edmx。

4

1 回答 1

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);

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

于 2013-10-09T16:59:43.543 回答