今日はEF4の新機能をご紹介しましょう。
EFはデータソースを抽象化できるのでビジネスロジックを変更することなくデータソースの切り替えが可能・・・・・・・・・・・・・・・
なのですが、複雑なシステムでは、どうしてもDB固有の操作が必要になるケースがあるかもしれません。そこで Native SQL を実行するための関数がObjectContextに追加されました。
ExecuteStoreCommand と ExecuteStoreQueryというコマンドです。
(EFを使っている意味合いが薄れてしまうので、安易に利用しないで使いどころを見極めてください。できるだけ使わなくて済むようにするのがベストです)
構文
C#
public int ExecuteStoreCommand( string commandText, params Object[] parameters )
public ObjectResult<TElement> ExecuteStoreQuery<TElement>( string commandText, params Object[] parameters )
ExecuteStoreCommand メソッド使ってみましょう
このコマンドはDBに対してNativeのUpdate、Delete、Insert、ストアドプロシージャなどを実行するために利用します。
戻り値は影響を受けた行数になります。使い方は非常にシンプルですね。
SchoolEntities db = new SchoolEntities();
int count = db.ExecuteStoreCommand("Update Schools set Name = 'Saga' Where Id = 1");
ExecuteStoreQuery<T> メソッド使ってみましょう
このコマンドはDBに対してNative のQueryを実行するのに利用します。
IEnumerable<School> schools = db.ExecuteStoreQuery<School>("SELECT * FROM Schools");
foreach (var s in schools) { Console.WriteLine(s.Name); }