我正在构建一个通过Nhibernate查询数据库的WPF应用程序。在Nhibernate中使用本机SQL Server功能?
我有一个SQL Server数据库与表xuser
有一个标志(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
,此查询不与错误的工作:
The data types numeric and int are incompatible in the '&' operator.
现在在我的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
时,此函数会出错。什么是最好的实践?