3

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 を実行する方法はありますか?

4

1 に答える 1

2
于 2013-04-21T20:35:11.407 に答える