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

これは、データヘルパー クラスとコントローラーで試したことです。

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

これがあいまいな場合は、何を含めるか教えてください。これは、ストアド プロシージャを使用して情報を取得する最初のショットです。

私が遭遇した他の問題の 1 つは、ビューから選択して ORDER BY しようとすることです。私の手順はあまり好きではありませんでした。だから、関数を作成する方が簡単かどうか疑問に思っていますか? もしそうなら、それをedmxに入れる方法。

4

1 に答える 1