首页 / C# / c# – 获取订单和订单行计数子查询
c# – 获取订单和订单行计数子查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 获取订单和订单行计数子查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1858字,纯文字阅读大概需要3分钟。
内容图文
![c# – 获取订单和订单行计数子查询](/upload/InfoBanner/zyjiaocheng/769/976e337e050740c790aba00f3ad4d039.jpg)
我正在将旧的App移植到Nhibernate.
旧的应用程序广泛使用ORACLE包,我想摆脱它.
我已经开始绘制几张桌子,事情看起来效果很好.
现在,我有这个查询,我希望能够通过QueryOver管理…或类似的东西:
SELECT
Orders.*
(SELECT COUNT(*) FROM OrderLines
WHERE OrderLines.CompanyCode = Orders.CompanyCode
AND OrderLines.OrderNumber = Orders.OrderNumber
AND NOT (OrderLines.OCLSCOM = 'Y' AND OrderLines.OCLSSEQ = 0)
AND OrderLines.Status = 'R') OrderLinesCount
FROM
Orders
WHERE
AND Orders.CompanyCode = [CompanyCode];
[CompanyCode]是一个过滤器.
我必须映射文件(Orders和OrderLines),我的关联看起来像这样:
<class name="Order" table="Orders">
...
<set name="OrderLines" access="field.pascalcase-underscore" inverse="true" lazy="extra" cascade="none">
<key>
<column name="OrderNumber" not-null="true"/>
<column name="CompanyCode" not-null="true"/>
</key>
<one-to-many class="OrderLine" not-found ="ignore"/>
</set>
</class>
我的订单表的主键是CompanyCode和OrderNumber.
我想查询订单并获取每个订单的行数.
我已经实现了我想要在Order映射上添加公式属性(感谢Ayende):
<property name="OrderLinesCount" formula="(SELECT COUNT(*) FROM OrderLines WHERE OrderLines.CompanyCode = CompanyCode AND OrderLines.OrderNumber = OrderNumber AND NOT (OrderLines.OCLSCOM = 'Y' AND OrderLines.OCLSSEQ = 0) AND OrderLines.Status = 'R')" />
但我害怕我的客户可能决定有一天改变那些讨厌的过滤器,我将被迫重新编译整个项目.
有没有办法用子查询(QueryOver)实现相同的结果?
在此先感谢您的帮助.
解决方法:
可能不是您正在寻找的,但您考虑过该集合的where子句.您可以调用order.OrderLinesFiltered.Count来获取值
<set name="OrderLinesFiltered" table="OrderLines"
access="field.pascalcase-underscore" inverse="true" lazy="extra"
cascade="none"
where=" NOT (OCLSCOM = 'Y' AND OCLSSEQ = 0) AND Status = 'R' ">
<key>
<column name="OrderNumber" not-null="true"/>
<column name="CompanyCode" not-null="true"/>
</key>
<one-to-many class="OrderLine" not-found ="ignore"/>
</set>
内容总结
以上是互联网集市为您收集整理的c# – 获取订单和订单行计数子查询全部内容,希望文章能够帮你解决c# – 获取订单和订单行计数子查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。