Entity Framework 4 では Native SQL が実行可能

今日はEF4の新機能をご紹介しましょう。

EFはデータソースを抽象化できるのでビジネスロジックを変更することなくデータソースの切り替えが可能・・・・・・・・・・・・・・・

なのですが、複雑なシステムでは、どうしてもDB固有の操作が必要になるケースがあるかもしれません。そこで Native SQL を実行するための関数がObjectContextに追加されました。

ExecuteStoreCommandExecuteStoreQueryというコマンドです。

(EFを使っている意味合いが薄れてしまうので、安易に利用しないで使いどころを見極めてください。できるだけ使わなくて済むようにするのがベストです)

 

 

構文

C#

 public int ExecuteStoreCommand(    string commandText,    params Object[] parameters)

 

C#

 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); }