c# - 用于 Sql 查询的 NHibernate 查询

标签 c# sql nhibernate

让我解释一下我的情况。我有一个 HSPartList 表,其中包含 partName、描述、issueNo 等。进行搜索时,我有一个标准应该列出具有最新 issueNo 的所有部件。 IE。如果表格数据如下:

|PartName| PartDesc| IssueNo|

TestPart1  TestPart1  1
TestPart1  TestPart1  2
TestPart2  TestPart2  1
TestPart2  TestPart2  2

在这个例子中,当我搜索最新一期时,它应该只返回

|PartName| PartDesc| IssueNo|

TestPart1  TestPart1  2
TestPart2  TestPart2  2

我对此有 sql 查询。我需要将其转换为 nHibernate 查询。

SQL 查询是:

select * from HS_PartList HS where HS.IsLive = 1 and HS.PartName Like '%test%' 和 IssueNo=(select max(issueNo) from HS_PartList where HS_PartList.PartName=HS.PartName)

NHibernate 版本是 2.1.2.4000

最佳答案

var subquery = DetachedCriteria.For<Part>()
    .Add(Restrictions.EqProperty("Name", "part.Name"))  <-- part is the alias of the main query
    .SetProjection(Projections.Max("IssueNo"));

var results = session.CreateCriteria<Part>("part")
    .Add(Restrictions.Eq("IsLive", true))
    .Add(Restrictions.Like("Name", teststring, MatchMode.Anywhere))
    .Add(Subqueries.Eq("IssueNo", subquery))
    .List();

关于c# - 用于 Sql 查询的 NHibernate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426552/

相关文章:

c# - 在 PDFsharp 中打开文档

c# - 结合 WCF、NHibernate 和 Ninject

nhibernate - 针对特定场景(一对多/一对一)更正 NHibernate 映射

c# - 如何从列表中删除最后两行

c# - 如何向 C# 9 记录添加注释

java - 无法在 ormlite 中使用列名 = "` GROUP`的 QueryBuilder

php - 我的代码是否容易受到 SQL 注入(inject)攻击

nhibernate - 为什么在 HQL 中直接使用列名有时才有效?

c# - C# .NET Winform 应用程序中的解析问题

Mysql优化避免表扫描