使用 QueryOver 在相关实体中按属性进行流畅的 NHibernate 排序
我的数据库中有项目和项目组表:
CREATE TABLE [items](
[item_id] [int] IDENTITY(1,1) NOT NULL,
[item_name] [varchar](50) NOT NULL,
[group_id] [int] NOT NULL
)
CREATE TABLE [itemgroup](
[group_id] [int] IDENTITY(1,1) NOT NULL,
[group_name] [varchar](50) NULL
)
以下是这些实体的映射类:
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Table("items");
Id(x => x.Id).Column("item_id");
Map(x => x.Name).Column("item_name");
References(x => x.ItemGroup).Column("group_id").Fetch.Join();
}
}
public class ItemGroupMap : ClassMap<ItemGroup>
{
public ItemGroupMap()
{
Table("itemgroup");
Id(x => x.Id).Column("group_id");
Map(x => x.Name).Column("group_name");
}
}
如何使用 QueryOver 从数据库中获取按组名称排序的所有项目?
我知道如何使用 Criteria 来完成它(使用别名)。
var criteria = Session.CreateCriteria<Item>()
.CreateAlias("ItemGroup", "group")
.AddOrder(Order.Asc("group.Name"));
我尝试创建 ItemGroup 别名并将其与 QueryOver 一起使用,但我的结果是按项目名称而不是按项目组名称排序。
I have items and itemgroup tables in my database:
CREATE TABLE [items](
[item_id] [int] IDENTITY(1,1) NOT NULL,
[item_name] [varchar](50) NOT NULL,
[group_id] [int] NOT NULL
)
CREATE TABLE [itemgroup](
[group_id] [int] IDENTITY(1,1) NOT NULL,
[group_name] [varchar](50) NULL
)
and here are mapping classes for these entities:
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Table("items");
Id(x => x.Id).Column("item_id");
Map(x => x.Name).Column("item_name");
References(x => x.ItemGroup).Column("group_id").Fetch.Join();
}
}
public class ItemGroupMap : ClassMap<ItemGroup>
{
public ItemGroupMap()
{
Table("itemgroup");
Id(x => x.Id).Column("group_id");
Map(x => x.Name).Column("group_name");
}
}
How can I get all items from the database ordered by group name using QueryOver?
I know how to accomplish it using Criteria (using alias).
var criteria = Session.CreateCriteria<Item>()
.CreateAlias("ItemGroup", "group")
.AddOrder(Order.Asc("group.Name"));
I tried to create ItemGroup alias and use it with QueryOver, but my result was sorted by item name not by itemgroup name.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它看起来像这样:
It would look something like this: