5

NHibernate 基準を使用して後方のようなステートメントを作成するにはどうすればよいですか?

WHERE 'somestring' LIKE [Property] + '%'

サブ質問:

SQLCriterion 式で抽象ルート エイリアスにアクセスできますか?


これは、SQLCriterion 式を使用してある程度達成できます。

Expression.Sql("? like {alias}.[Property] + '.%'", value, NHibernateUtil.String);

ただし、クラス継承の場合{alias}、列の誤ったエイリアスに置き換えられます。

例 (これらのクラスは別のテーブルに格納されます):

public abstract class Parent 
{
    public virtual string Property { get; set; }
}

public class Child : Parent { }

Childルート タイプとして実行された上記のクエリは、テーブルではなくテーブル{alias}へのエイリアスに置き換えられます。これにより、無効な列の例外が発生します。ChildParent

プロパティがルート タイプ テーブルではなく親テーブルに存在する場合、上記のような like ステートメントを実行する必要があります。

4

1 に答える 1

0

必要な演算子の前に NOT (!) を追加してみましたか? うまくいくかもしれないと思います。

于 2010-05-27T18:19:15.883 に答える