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}
へのエイリアスに置き換えられます。これにより、無効な列の例外が発生します。Child
Parent
プロパティがルート タイプ テーブルではなく親テーブルに存在する場合、上記のような like ステートメントを実行する必要があります。