Code First アプローチで .NET 4.5 と EF 5 を使用していますが、全文検索を実装する必要があります。私はすでにそれについて多くのことを読んできましたが、これまでのところ私の結論は次のとおりです。
ストアド プロシージャもテーブル値関数も、Code First ではマップできません。
それでも、動的SQLを使用してそれらを呼び出すことができます
dbContext.Database.SqlQuery<ムービー>(Sql、パラメータ)
しかし、これは IEnumerable を返し、db サーバーからデータを取得する前にさらにフィルタリングを実行できるように、IQueryable が必要です。これらのパラメーターを Db 関数に送信できることはわかっていますが、それは望ましくありません。
私のニーズを満たすことができることがわかったのは、次のようなIObjectContextAdapterのCreateQuery関数です(テストのためだけにすべて選択):
IQueryable<Movie> result = ((IObjectContextAdapter)dbContext).ObjectContext.CreateQuery<Movie>("SELECT * FROM Movie");
ただし、これを実行すると例外がスローされます" 'System.Data.EntitySqlException was unhandled HResult=-2146232006 Message=The query syntax is not valid. Near term '*', line 1, column 9.'
質問は次のとおりです。
この例外が発生するのはなぜですか?修正できますか?
そうでない場合、 Code First で IQueryable を返す FTS を実行する方法はありますか?