私のプロジェクトの1つをEntity Framework 7(rc1-final)に移行することにしました。私はSQL Serverをターゲットとしており、EntityFramework.MicrosoftSqlServer
パッケージもインストールされています。EF7を使用してカスタムSQLクエリを実行することは可能です
DBからオブジェクトを取得するためにカスタムSQLクエリを実行できないような問題が1つあります。 (DbContext.Database
プロパティを介してアクセスすることができる)
DatabaseFacade
オブジェクトは、(何も返さない)拡張メソッドExecuteSqlCommand
を提供するが、それは、オブジェクトをフェッチすることを可能にするSqlQuery<T>
方法を提供していません。どちらの方法も古き良きEF 6で利用できましたが、新しいEF 7は最初のものだけを宣言しています。
したがって、SqlQuery<T>
メソッドはまだここにあります(ただし移動/名前が変更されました)か、新しいEF実装から完全に削除されましたか?
もちろん、冗長な方法(SqlCommand
とそのExecuteReader
メソッドを使用して)を解決することは絶対に可能ですが、私はそれを避けることをお勧めします。
おかげで、私はすでにその方法を知っている、しかし:あなたのプログラムで は、あなたがこれを行うことができます。私はこのメソッドをDbSetと一緒に使用し、DbContext内で定義する必要があることを理解しています。私のケースは少し異なります - 私は自分のDbContextに存在しないオブジェクトを取得したい(つまり、クエリを実行し、戻された各行に対してタイプTのオブジェクトを作成する)。 –
その場合、[この回答](http://stackoverflow.com/a/34191033/469777)のような基礎となるSqlCommandを使用してください。 –
実際には私は今このアプローチを使用しています(Command + ExecuteReader)。 SqlQueryが見つからないと比較して冗長ですが、それはもちろん動作します。 Btw、お時間をいただきありがとうございました。あなたの答えは間違いなく有用です。ありがとうございます。 –