0

LINQ to NHibernate を使用するときに ac# メソッドを呼び出す方法は?

以下のコードは失敗します。

List<UriTemplate> result1 = (from uriTemplate in this.SessionFactory.Session.Query<UriTemplate>()
                             where Regex.Match(uri, uriTemplate.UriTemplateValue).Success
                             select uriTemplate).ToList();
4

1 に答える 1

6

すべての方法がサポートされているわけではありません。Contains や Substring などが機能する可能性があります。ただし、基になる LINQ プロバイダーが任意の C# メソッドを SQL に変換できるとは期待できません。基礎となるデータベースは、正規表現が何であるかさえ知らない場合があります。

サーバーでクエリを実行したら、クライアント側でフィルタリングを行う必要があります。

List<UriTemplate> result1 = this
    .SessionFactory
    .Session
    .Query<UriTemplate>()
    .ToList()
    .Where(uriTemplate => Regex.Match(uri, uriTemplate.UriTemplateValue).Success)
    .ToList();

基礎となるデータベースが正規表現クエリをサポートしている場合、おそらく何らかのネイティブ関数を介して実行されます。このnative function場合、サーバーでフィルタリングを実行する場合は、これを呼び出す必要があります。

于 2013-05-17T13:09:55.963 に答える