まだ生きているようです

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- : スポンサー広告 :
Pagetop

EntityFrameworkでのストアドプロシージャコール2

前回の続きで、EntityFrameworkでのストアドプロシージャコールです。

今回はEntity Clientで考えてみたいと思います。

結果セット、引数、リターンコードを一度に照会したいので、以下のようなストアドプロシージャを使用します。
CREATE PROCEDURE [dbo].[byroyalty]
@percentage int,
@arg nvarchar(50) output
AS
select au_id from titleauthor
where titleauthor.royaltyper = @percentage

SELECT @arg = 'テスト'
RETURN 1

呼び出し側のコードは以下のようになります。
using (pubsEntities db = new pubsEntities())
{
    db.Connection.Open();
    DbCommand command = db.Connection.CreateCommand();
    command.CommandType = CommandType.StoredProcedure;
    command.CommandText = "pubsEntities.byroyalty";
    command.Parameters.Add(new EntityParameter("percentage", DbType.Int32)
                      { Direction = ParameterDirection.Input, Value = 40 });
    command.Parameters.Add(new EntityParameter("arg", DbType.String)
                      { Direction = ParameterDirection.Output , Value = "" });
    command.Parameters.Add(new EntityParameter("ReturnValue", DbType.Int32)
                      { Direction = ParameterDirection.ReturnValue });
    DbDataReader dr =
        command.ExecuteReader(CommandBehavior.SequentialAccess);
    while (dr.Read())
    {
        Console.WriteLine("結果セット:" + dr[0]);
    }
    dr.Close();
    int? returnValue = ((int?)command.Parameters["ReturnValue"].Value);
    Console.WriteLine("戻り値:" + returnValue.ToString());

    string arg = ((string)command.Parameters["arg"].Value);
    Console.WriteLine("Output引数:" + arg);
}

むぅ、長いです。ただ通常のADO.NETでも同じでしたので、単に普段リポジトリとかで楽をし過ぎているのでしょう(笑)

結果は以下のようになります。
20100924_EF4.jpg

リターンコードまで取得できているのが分かりますね。
さて、注意点ですが、.ExecuteReaderは、SequentialAccessオプションが必須になります。
また、ADO.NETと同様に、DataReaderをCloseしなければ、リターンコードとOutput引数の値は取得することが出来ないようになっています。
後は、DataReaderでの結果セットの取得になりますので、その後EntityClassで取り扱いたい場合は、何らかの手段を講じる必要が出てきますよね。

記述量も多くて多少面倒ですし、Object Servicesと使い分ける必要がありそうです。

前回の記事も含めて、あまり面白い話になりませんでした。。。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : EntityFramework

2010-09-24 : EntityFramework : コメント : 0 : トラックバック : 0
Pagetop
コメントの投稿
非公開コメント

Pagetop
« next  ホーム  prev »

カレンダー

プルダウン 降順 昇順 年別

03月 | 2018年04月 | 05月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -


カテゴリ

openclose

タグクラウドとサーチ

メールフォーム

名前:
メール:
件名:
本文:

プロフィール

こだかたろう

元MSの小高と申します。
(↓こんな人です。)
こんな見た目です

ずっとエバンジェリストをしていましたが、この度転身いたしました。
よろしくどうぞ。

Select Template

RSSリンクの表示

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。