0

一連のデータを返すストアド プロシージャを作成しました。私の場合、それは役割のセットです

CREATE PROCEDURE [dbo].[GetRoles]
@ID Int
AS
SELECT Roles.Role FROM Roles WHERE Roles.CustomerCustomerID=@customerID
RETURN 0

私はEntity Frameworkを使用して、この値を次のような変数に取得しています:

var query = context.GetRoles(ID);

これを操作して「ロール」の をdataset作成し、listlist

しかし、私はストアド プロシージャを呼び出しており、ここではクエリ ステートメントを記述していないため、たとえば次のように記述します。

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

各結果の値を取得するにはどうすればよいですか?

明らかにインテリセンスでテーブルのフィールドにアクセスできません

この問題に対してどのようなアプローチを取るべきですか?

前もって感謝します..

4

1 に答える 1

3

EDMX モデルで FunctionImport を作成し、列をエンティティまたは複合型にマップする必要があります。これを行うには、EDMX を右クリックし、[追加/関数のインポート] を選択して、リストからストアド プロシージャを選択します (存在しない場合は、データベースからモデルを更新します)。FunctionImport に名前を付け (例: "GetRoles")、それが返すものを選択します (この例では、Roles.Role がどんなタイプのスカラーのコレクションでもあります。

それで

var query = context.GetRoles(ID); 

ObjectSet<T>,T がマップ先の型であり、反復できる を返します。

于 2012-07-25T09:45:31.903 に答える