EntityFramework Code First で任意のクエリを実行する

samatsu 7/12/2015 3505 N/A Code First

Entity Framework 4.3 Code First 時点では、生成されるクエリに手を入れることはできません。がいくつかの方法である程度自由にクエリを実行できます。

Database.Connection プロパティ を使用する

EntityFramework でもなんでもなくなってしまいますが、DbConnectionを使用する方法があります。DbContext.Database.Connection プロパティから、DbConnection オブジェクトを取得できます。DbConnection を使用すれば任意のクエリを実行できてしまいます。

Database.SqlQuery メソッドを使用する

DbContext.Database.SqlQuery メソッドを使用して、SELECTクエリを実行できます。SqlQueryを使用する場合は、抽出結果が型パラメータまたは引数で指定したTypeにマッピングできる必要があります。SqlQuery では任意のクラスのインスタンスを作成でき、Change Tracking の対象になりません。SqlQuery はパラメタ化されたクエリも実行できます。詳細はDatabase.SqlQueryを使用して非エンティティクラスを作成するを参照してください。

Database.ExequteSqlCommand メソッドを使用する

DbContext.Database.ExequteSqlCommandを使用するとDML/DDL クエリを実行できます。ストアドやINSERT,UPDATE,DELETEコマンドを実行できます。ExecuteSqlCommandもパラメタ化されたクエリを実行できます。