Nhibernate を介してデータベースにクエリを実行する WPF アプリケーションを構築しています。
ユーザーの権限を格納xuser
するフラグ ( ) があるテーブルを持つ SQL Server データベースがあります。xflag
これで、スーパーユーザーまたは管理者を抽出する次の SQL クエリができました。
select *
from xuser
where (CONVERT(int,xflag) & 2 > 0 ) or (CONVERT(int,xflag) & 1 > 0 )
どこ2 = flag_administrators
と1 = flag_superusers
SQL 関数CONVERT
がないと、このクエリはエラーで機能しません。
「&」演算子では、numeric と int のデータ型に互換性がありません。
今、私の WPF c# nhibnernate アプリで、次のクエリを実行します。
var xadmins= session.Query<Xuser>()
.Where(p => (p.Xflag & (int)Flag.FLAG_SUPERUSER)>0).ToList<string>();
このクエリは、同じ SQL エラーでは機能しません。
この Linq2Nhibernate クエリで T-SQL 関数を使用したいと考えています。どうやってやるの?
大きな問題は、このアプリケーションが方言で動作するMsSql2008
必要があることです。Oracle
ここで関数を使用すると、 Convert
db を に変更するとOracle
、この関数はエラーになります。ベストプラクティスは何ですか?