2012-07-25 71 views
0

我創建了一個存儲過程,它將返回一組數據。在我的情況下,它被設置角色的如何使用存儲過程獲得實體框架中的數據集合

CREATE PROCEDURE [dbo].[GetRoles] 
@ID Int 
AS 
SELECT Roles.Role FROM Roles WHERE [email protected] 
RETURN 0 

我使用實體框架來得到這個值的變量是這樣的:

var query = context.GetRoles(ID); 

我打算處理此dataset和創造的list「角色」,並返回list

但由於我調用存儲過程,我不是在這裏 寫查詢語句,例如:

using (AdventureWorksEntities context = new AdventureWorksEntities()) 
{ 
    string LastName = "Zhou"; 
    var query = from contact in context.Contacts 
       where contact.LastName == LastName 
       select contact; 

    // Iterate through the collection of Contact items. 
    foreach(var result in query) 
    { 
     Console.WriteLine("Contact First Name: {0}; Last Name: {1}", 
       result.FirstName, result.LastName); 
    } 
} 

我怎樣才能像在每個結果值是多少?

我不能明顯訪問智能感知

什麼是我應該在這個問題上的做法表的字段?

在此先感謝..

回答

3

您需要在您的EDMX模型來創建一個FunctionImport,列映射到實體或複雜類型。爲此,在EDMX中右鍵單擊,選擇添加/函數導入,然後從列表中選擇存儲過程(如果不存在,則從數據庫中刷新模型)。給FunctionImport的名稱。(如:「GetRoles」),並選擇返回結果是什麼(在你的榜樣,標量的集合,任何類型的Roles.Role是

然後

var query = context.GetRoles(ID); 

將返回ObjectSet<T>,其中T是你已經映射到的類型,你可以迭代。

+0

請你詳細說明一下,我已經有了數據庫上下文,用於訪問數據庫。 – 2012-07-25 09:57:22

+0

非常感謝podiluska。對於其他人來說,這是一些新的鏈接。一些其他人已經在Entity Frame Work擴展中提出了這個建議他的作品很棒。 msdn.microsoft.com/en-us/library/bb896231.aspx - – 2012-07-25 10:43:47