2013-10-09 81 views
0

我在網上搜索這個問題的答案,並且我已經簡要地回答了。我有一個簡單的存儲過程,從視圖中選擇列,我想將這些數據保存在我的程序的模型中。然而,當我調用存儲過程時,它有一個返回類型的ObjectResult,所以我一直在試圖實現這一點,但是我對於在我的模型中使用什麼數據類型感到不知所措。保存SELECT存儲過程的結果ASP.NET實體框架

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類都試過了,在我的控制器:

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

如果這是含糊的,請讓我知道什麼,包括,這是我在獲取信息第一槍與存儲過程。

我遇到的其他問題之一是嘗試使用從視圖中選擇的ORDER BY,我的過程並不那麼喜歡。所以我想知道如果創建一個函數會更容易?如果是這樣,那麼怎麼把它變成edmx。

+0

嗯,我想我找到了問題,因爲我無法將我的過程映射到一個實體,因爲Count()我碰壁了。 –

+0

將它作爲表值函數來使用。 –

+0

我試着定義一個表值函數,但我無法弄清楚如何將它導入edmx。當我在數據庫中創建它時,它並未顯示在存儲過程/函數更新菜單下。 –

回答

1

我不知道該存儲過程中添加的目的是我的數據類 我根本就更新我的模型:

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

,並呼籲:

public List<GetPartnerCompanyRelationships_Result> DashboardCompanyList { get; set; } 

更新我的DBHelper從我的控制器的方法:

MyDashBoard.DashboardCompanyList = _da.GetPartnerCompanyRelationships(coid); 

這使我可以使用我模型中的所有複雜數據。