2013-09-25 25 views
0

你好,這是SP,我有:如何檢查MVC中select語句的結果?

USE [Tracker_Entities] 

    SET ANSI_NULLS ON 
    GO 

    SET QUOTED_IDENTIFIER ON 
    GO 

    CREATE PROCEDURE [dbo].[uspHub] 

    @id int 
    AS 
    BEGIN 

    SELECT DISTINCT table1.UID, table1.url, Scope.ID 
    FROM   table1 INNER JOIN 
      Scope ON table1.UID = Scope.newBrand 
    WHERE  (table1.value = 0) AND (Scope.ID = @id) 
    ORDER BY table1.url 
    END 

    GO 

當我通過傳遞ID作爲參數,我得到預期的結果運行該SP在SQL Server中。現在我需要在mvc中檢查這個SP。這是我打電話這個SP在我的MVC方式:

using (var ctx = new database_Entities()) 
     { 
      int ID = 122; 
      ctx.uspHub(ID); 

      ctx.SaveChanges(); 

     } 

但是,當我使用語句把斷點和檢查結果,它沒有顯示任何結果。我在這裏苦苦掙扎了很久,我沒有得到適當的解決方案。那麼MVC中的哪些步驟檢查具有選擇語句的SP的結果?

更新: 我在使用tolist後得到了解決方案。現在我在列表中獲得三個結果,我需要獲取一個作爲URL的結果並將其作爲輸入參數傳遞。 我的代碼: int ID = 413; var x = ctx.uspdHub(ID).ToList();

這裏x有3結果。我需要從中得到一個結果。我試着做x。但在我輸入點後它不顯示結果。我怎麼能做到這一點?

回答

1

你必須Get結果到適當的model/object

List<YourEntity> model; 
    using (var ctx = new database_Entities()) 
    { 
     int ID = 122; 
     model = ctx.uspHub(ID).toList(); 

     //ctx.SaveChanges(); - no need to call SaveChanges 
          // - as you are not updating anything 

    } 

如果您需要更多信息,閱讀本文。 Call Stored Procedure From Entity Framework(上面的代碼將反正工作...)

+0

解決了。力量知道它很容易.. – Raj

+0

嗨,現在我有一個疑問。如果可能,你能幫助我嗎?我可以在我的列表中看到三個結果。我需要從這個URL中獲得一個結果。我試圖這樣寫:var x = ctx.uspHub(ID).toList();現在取得結果,我寫x.add()。 – Raj

+0

有一種方法...嘗試並檢查出來! :)你會很快學到這種方式.. :) – Paritosh

0

使用...

using (var ctx = new database_Entities()) 
     { 
      int ID = 122; 
      var result = ctx.uspHub(ID); 
     } 

result後添加休息看到在result變量什麼。很明顯,結果會需要移動,但我只是在這裏展示如何看到返回的數據。

0

嘗試使用這樣的:

using (var dataContext= new database_Entities()) 
     { 
      int ID = 122; 
      SomeEntity[] result = dataContext.Database.SqlQuery<SomeEntity>("[dbo].[uspHub] @id",new SqlParameter("@id", ID)).ToArray(); 
     } 

這是爲我好。我已經使用ORM EntityFramework來連接數據庫。