2017-02-23 10 views
0

非常に大きなテーブルから少数の列を返す単純なストアドプロシージャがあります。Entity Frameworkはストアドプロシージャからselectコマンドオブジェクトを取得します

このような何か:

CREATE PROCEDURE spTemp @Type nvarchar(25) 
AS 
    SELECT DISTINCT gType, gYear, gModel 
    FROM MyTableOnDB 
    WHERE gType = @Type 
GO 

私はまた、データへの記入することを目的としました。心の中でエンティティフレームワークと手続きの戻り値にオブジェクトを接続するための権利/最良の方法だろう何

public class info 
{ 
    public string Type {get; set;} 
    public string Model {get; set;} 
    public int year {get; set;} 
} 

:ような何か?

P.S.私はSQL Server、EF、C#を使用しています。

答えて

0

EFを使用しているときに、格納されたエンティティがソリューションに作成されます。ストアドプロシージャを呼び出してエンティティタイプに変換することができます。ここでは、VS でストアドプロシージャをインポートし、データを生成するためにそれらを使用することができ、リンクStored-Procedureとして

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<info>("spTemp", Type); 
0

サンプル方法です。

0

ストアドプロシージャをモデルにインポートする必要があります。 {sp name} _Resultという名前の新しい複合型が作成されます。

クエリの複合型は不要です。このダイアログボックスのプロジェクトエクスプローラで関数のインポートを右クリックして、これを削除して、適切なエンティティを返すように戻り値の型を変更します。

完了したらクラス内の関数が表示されます。あなたはこのような何かで手順を実行することができます

:私はここのチュートリアルからこれを適応している

using (var context = new tempDBEntities()) 
{ 
    var type = context.spTemp(1); 

    foreach (gType cs in gTypes) 
     Console.WriteLine(cs.gType); 
} 

、あなたはそれが働いてもらうなら、私に知らせてください。私はエンティティのフレームワークをアップスキルしようとしています。

http://www.entityframeworktutorial.net/stored-procedure-in-entity-framework.aspx

関連する問題