0

Linq to Entities は、IQueryable を実装する ObjectQuery を使用します。通常は IQueryable メソッドを使用してデータをフィルタリングしますが、今日は特別な LIKE ステートメントを作成する必要がありました。フレームワークはスマートであると考え続け、特別な LIKE ステートメントを null および無効にするチルダを使用して、ワイルドカード「%」を「エスケープ」します。そのため、調べてみると、ObjectQuery には Where メソッドのオーバーロードがあり、ObjectParameters と共に文字列を渡すことができることがわかりました。これを実行しましたが、IQueryable のように実行されません。アプリケーションを実行しても、このコードがヒットした後は何も起こりません。エラーもデータベースへのヒットもないため、作成したクエリが実際には実行されていないことがわかります。

この子犬を処刑するにはどうすればよいですか?

public IQueryable<tbl_Path> GetPathsByWildCardSearch(string searchTerm)
{
    return this.ObjectContext.tbl_Path
        .Where("FullPath NOT LIKE @p0 and FullPath LIKE @p1", 
            new ObjectParameter("p0", string.Format("%{0}%{1}%", searchTerm, tbl_Path.PathSeperator)),
            new ObjectParameter("p1", string.Format("%{0}%", searchTerm)));
}
4

1 に答える 1

0

;)ついに、その上にExecute()メソッドがあることがわかりました。

于 2010-09-02T20:40:27.177 に答える