问题标签 [nhibernate-criteria]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 与 NHibernate 和标准联合?
与 NHibernate 和标准联合:
是否可以在 Criteria 或 QueryOver 中使用?如果没有,是否有任何其他方法可以在同一查询中实现两个结果的联合?
nhibernate - 反转NHibernate查询的逻辑
我构建了以下查询,使用NHibernate
它将给我一个MenuView
包含给定页面(由页面 id 引用)的项目集合。
这很好用;但是,现在我想做相反的事情:我想查询所有不包含具有指定 ID 的页面的可编辑菜单对象。到目前为止,我还没有找到解决方案。我原以为对上述查询的 pages 部分进行简单的反转就足以导致:
但是,这会导致以下 SQL:
仍然返回包含 id 为 8 的页面的菜单项的结果。为什么这种简单的逻辑反转在代码方面不那么简单?
[更新] 接受 Firo 的建议,将建议的查询更改为;
现在生成如下sql语句;
)
乍一看,这似乎正是我想要的,但遗憾的是(可能是由于我对连接的理解不深)仍然没有完全返回我想要的。鉴于下表
菜单
然后是PagesInMenu的连接表(带有 WHERE PageID = 1 的 WHERE 子句)
我们可以看到菜单 5 和 6 中没有引用 id 为 1 的页面。我希望有问题的查询只返回一行,这将是 ID 为 5 的菜单的 ID、名称和描述,因为这是仅包含第 1 页且可编辑的菜单
相反,新查询返回;
我已经划掉了所有返回但不应该的行。这里发生了什么 !?
nhibernate - nhibernate - 通过中间表的标准
我有一个桌子团队,我有一个桌子位置。每个团队可以有多个位置,每个位置可以有多个团队,所以它是多对多的关系。
在数据库中创建此场景时,将有 3 个表,Team、Location 和 TeamLocation 来保存多对多链接。
我已经使用以下方法在 nhibernate 中映射了它... Team.hbm.xml
和 Location.hbm.xml
现在我正在尝试使用标准 API 检索基于特定位置的所有团队,但我无法......
等效的sql...
并在 asp.net 代码中
这抛出和错误..
我看不出来:(
纠正我..谢谢!
nhibernate - 如何使用 NHibernate 查询外键列,而不检索相关实体
假设我有两个课程:Parent
和Child
. AParent
有一个属性Children
,它当然是Child
对象的集合。
Child
没有ParentId
财产。它确实有一个Parent
属性。
所以,我的 NHibernate 映射Child
包括:
我的Parent
映射包括:
现在这就是我想做的事情:我想获得所有Child
具有特定ParentId
. 我知道我可以先获取Parent
然后返回它的Children
属性。但是如果我想Child
直接查询表呢?
如果它是一个映射属性(例如,Name
),我可以使用 NHibernate 的标准,但在这种情况下,ParentId
不是映射的。
我尝试使用类似的东西:
但这不起作用。我求助于使用 SQLCriterion(如此处所述),但一位朋友/同事让我认为必须有更好的方法。
有任何想法吗?有预测的东西和Restrictions.EqProperty
?
sql-server - 是否可以让 Nhibernate 查询生成 columnName<>'value' 而不是(columnName='value')?)
是否可以让 Nhibernate 查询生成具有 columnName<>'value' 而不是(columnName='value')的 Sql?
有人告诉我,使用 not() 可能会对 <> 产生 Sql 性能问题。
通常我会这样写我的查询......
这导致
更新
这个问题表明,以一种或另一种方式编码不再存在任何性能问题
在 SQL Server 中,not(columnName='value') 和 columnName<>'value' 之间有什么区别吗?
nhibernate - NHibernate 默认子集合和标准策略
在域模型中,有许多实体的Status
枚举值为Active
或Deleted
。
我正在寻找有关如何处理的推荐方法的文档和建议:
获取具有
Status
枚举的实体集合时,排除Deleted
默认设置为值的实体(可根据具体情况覆盖)获取实体的子集合时,默认情况下会排除默认设置为值的实体
Deleted
。
总而言之,我实际上希望保留与具有Status
枚举属性的实体相关的所有数据,但要排除默认值为Deleted
for status 的那些数据。
任何指向正确方向的指针都非常感谢。
nhibernate - 使用 Nhibernate 我想使用用户名和密码登录
我喜欢人们帮助我了解表 TUser 中存在用户名和密码详细信息。我的任务是如何检查我何时使用 username:admin 和 password:admin 登录并按下登录按钮它使用数据库搜索然后我可以使用 Nhibernate 登录内部。请帮助我。这是下面的代码
nhibernate - NHibernate 多个连接子类并使用条件重复列名
假设我们有这个实体结构:
在基类 Document 中,我们有字段Id、Name、CreateDate。在加入的子类 DocumentA 中,我们有字段Book,Pages。在 DocumentB 中,我们有Magazine、Pages。
所以问题是当我尝试使用标准获取记录时:
因此,如果我们在selectColumns中有两个Pages列,NHibernate 只会从第一个中选择数据。事实上,它甚至会生成这样的 SQL 查询
有谁知道如何使用 Criteria 解决我的问题?顺便说一句,我没有选择更改此结构的选项,在此系统中,用户可以定义自己的类和嵌套类。
nhibernate - NHibernate 将字符串参数转换为 nvarchar 而不是 varchar。我怎样才能阻止这个?
我有一个映射到视图的类,并且正在搜索名字和姓氏以搜索患者记录。该视图最终会查看患者表上的名字和姓氏字段(可能还有其他字段,具体取决于输入)。当条件转换为 SQL 时,它会将我的字符串作为 nvarchar 参数输入。我已经在我的映射中使用了 type="AnsiString" 和 length="50" ,但它仍然将它们转换为 nvarchar,这导致我的查询性能受到影响。
SQL Profiler 将输出 SQL 显示为使用 nvarchar 参数,并在我的所有字符串前面加上 N 以强制转换它们。
我错过了什么吗?在标准或映射上还有什么需要做的吗?此外,参数的长度也不是恒定的 50。我正在使用 NHibernate 2.1。
sql-server - 如何使用 NHibernate 的 Criterion API 指定位掩码/位域 WHERE 子句
我有三张桌子 - Recipient
, Message
,MessageType
消息类型如下所示:
Recipient
包含用作位域的整数列;收件人可以选择他们想要接收的消息类型;如果收件人想要接收时事通讯和特别优惠,我们会将其位域设置为(2 ^ 2) | (2 ^ 3)
Message
包含对MessageTypeId
和计算列的引用,MessageTypeBitFlag
定义为POWER(2, MessageTypeId)
我用 SQL 表示的查询类似于:
通过对 bitfield 和 bitflag 列进行按位与操作,很容易只选择特定收件人感兴趣的消息。
问题是,我不是在 SQL 中执行此操作 - 我需要将此作为附加选项添加到基于 NHibernate Criteria API 构建的相当丰富的系统中。
有没有办法通过 NHibernate API 来表达这个标准 - 使用 API 或通过向现有标准添加 SQL/HQL 子句?