0

ストアドプロシージャが複数の行を返すようにしたいのですが、エンティティデータモデルを使用しています。また、出力として指定されたすべての行の列の値を取得したいと思います。

SqlDataReader私は、、を使用してこのことをSqlCommand行いSqlConnectionました。

SqlCommand cmd = new SqlCommand("select leave_details,LID,from_date,to_date from LeaveTable where E_ID=1 and from_date<@toDate and to_date>@fromDate", con);
cmd.Parameters.Add("@toDate", System.Data.SqlDbType.Date);
cmd.Parameters["@toDate"].Value = to_date;
cmd.Parameters.Add("@fromDate", System.Data.SqlDbType.Date);
cmd.Parameters["@fromDate"].Value = from_date;
con.Open();

obj = cmd.ExecuteReader();

そして、私はを使用して行をトラバースできますobj.read()

そして、私は特定の列の値を使用して読み取ることができます

leave_id = (int)obj.GetValue(1);

ストアドプロシージャとエンティティデータモデルを使用した関数インポートの作成で同じことを行うにはどうすればよいですか?

4

2 に答える 2

1

これを行うにはいくつかのステップがあります。これは、オンラインで見つけることができるこれを達成するためのこれまでで最高のチュートリアルであると私は信じています

http://msdn.microsoft.com/en-us/data/gg699321.aspx

いくつかのテーブルから選択しているため、基本的に新しい複合型を作成する必要があります。このチュートリアルには、これを行う方法の例があると思います。基本的に、リスト内の値のセットを返し、リストから各値/オブジェクトを読み取ることができます

于 2012-12-24T05:29:08.060 に答える
0

エンティティフレームワークオブジェクトモデルの関数インポートとしてストアドプロシージャを追加できますが、追加するとタイプを返すように求められるため、複雑なカスタムエンティティを生成できます。ストアドプロシージャとの通信中に、エンティティの透かし彫りからデータをフェッチしてカスタムエンティティに追加するため、テーブルから複数の行を取得し、エンティティのオブジェクトを作成するときにもう1つのポイントを取得して、設定されている関数の名前を取得します.ToLIst()を呼び出しの最後に移動して、結果セットのリストを返します。

すなわち

エンティティのチームワーク:欠勤

エンティティのオブジェクトを作成します:abventity abc = new abcentity();

SP関数を呼び出します:var Result = abc.SPCall(parmae​​ters).tolist();

結果として、ストアドプロシージャからの結果のリストが表示されます

于 2012-12-24T11:10:25.263 に答える