Tech Days フォローアップ(その5)  ADO.NET Entity Framework ストアドプロシージャのモデリング


みなさん、こんにちは。今日はADO.NET Entity Frameworkにおけるストアドプロシージャの利用方法についてご紹介します。


 


特にEFに限って言えばストアドプロシージャはこんなところで効果を発揮します。


・個別DB依存処理


   SQL ServerOracleなどがもつ、固有のコマンドなどを実行できます。


・パフォーマンス改善


   LINQ to SQL と同様にADO.NET Entity Frameworkは複数行同時更新に対応していません。結果ラウンドトリップ回数が増えてしまいパフォーマンスが落ちてしまう可能性があります。


そのような問題の解決策として、まとめてUpdateDelete処理を実行できます。


 


 


 


今日は簡単な利用手順をお伝えします。詳細は以下のURLをご覧ください。


http://msdn.microsoft.com/ja-jp/library/bb399203.aspx


ちなみにストアドプロシージャは下記を利用します。(手抜きでスミマセン)


 


ALTER PROCEDURE [dbo].[InsertDrinkProduct]


  @productid int


 ,@productname nvarchar(40)


 ,@size int


AS


 insert into [dbo].[Products]([ProductID], [ProductName], [Discontinued])


 values (@productid, @productname, 0);


 


 insert into [dbo].[DrinkDetails]([ProductID], [Size])


 values (@productid, @size);


 


 


  Entity Data Modelウィザードで必要となるストアドプロシージャをインポートします。


 



 


 


 


②インポートするとモデルブラウザにこんな感じで表示されます。今回はInsertDrinkProductという名前のストアドプロシージャで入力パラメータが3つ(productid, productname, size) あります。


 



 


 


 


  この状態ですとストアスキーマのみに定義された状態です。よって概念スキーマにもEntityとして定義が必要になりますので、右クリックしてコンテキストメニューから関数のインポートを実行します。


 



 


 


 


 


  こんな感じのダイアログが表示されます。関数インポート名にはすきなEntityの名前を指定します。


 



 


 


 


 





  モデルブラウザを展開してみるとEntity が作成されているのがわかります。これでEntity ClientObject Servicesを使った呼び出しが可能になります。


 




 


 


 


今日はストアドプロシージャのモデリングまでお伝えしました。次回は実際にEntity ClientObject Servicesを使ったプログラムをお見せします。



Comments (0)

Skip to main content