【发布时间】:2013-03-04 03:35:18
【问题描述】:
我正在构建一个通过 Nhibernate 查询数据库的 WPF 应用程序。
我有一个 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,此查询将无法运行并出现错误:
数据类型 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 时,此函数会出错。最好的做法是什么?
【问题讨论】:
标签: c# .net sql linq nhibernate