2017-03-13 9 views
0

I次のコードを持っている:これはうまく機能しているエンティティフレームワークで使用されるハードコーディングされたSQLのSELECTクエリを交換し

context.Database.SqlQuery<MyEntityType>("Select a,b from MyTableA inner join MyTableB on MyTableA.column = MyTableB.column); 

、それは私にMyTableとし、MyTableBでいっぱいMyEntityTypeのリストを返します。

問題は、自分の選択がcsharpファイルにハードコードされていることです。私は、SQLオブジェクトにそれを持って、ちょうどそこにこのSQLオブジェクトの名前を入れたいと思います。しかし、私はそれを行う方法を知らない。私はそれを保存されたproecudreまたは機能に入れなければならなかったか?はいの場合は、ハードコーディングされたクエリをこの関数の名前で置き換えるか、ストアドプロシージャで十分でしょうか?あなたの助けを事前に

おかげ

+0

あなたはエンティティフレームワークを使用しています。 EFにはチュートリアルの使い方と、LINQクエリを使ったオブジェクトの処理方法があります。それを見たことがありますか? [チュートリアルへのリンク](http://www.entityframeworktutorial.net/) – Tatranskymedved

答えて

0

は、私は通常、このようなカスタムクエリのストアドprocsのを使用して、はい、あなたは、単にそれがPROCの名前を使用してアクセス:

​​

あなたはまた、行うことができますこれは、パラメータを取るprocsで:

var my_param = new SqlParameter("@param1", System.Data.SqlDbType.Int); 
my_param.Value = 123; 

context.Database.SqlQuery<MyEntityType>("my_stored_proc_with_params @param1", my_param) 
+0

[OK]を、どのように私のSQLクエリをprocストックに書き込む必要がありますか? – user2443476

+0

SQLデータベースにストアドプロシージャを作成することはできますが、通常はそれらを作成します: 'create procedure my_stored_proc as begin MyTableAからのa、bの選択MyTableA.columnのMyTableB = MyTableB.column end' – sleeyuen

関連する問題