nhibernate - 使用 QueryOver 的相关实体中的 Fluent NHibernate 按属性排序

标签 nhibernate fluent-nhibernate sql-order-by

我的数据库中有项目和项目组表:

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 一起使用,但我的结果是按项目名称而不是项目组名称排序的。

最佳答案

它看起来像这样:

Item itemAlias = null;
ItemGroup itemGroupAlias = null; 

session.QueryOver<Item>(() => itemAlias)
    .JoinAlias(() => itemAlias.ItemGroup, () => itemGroupAlias)
    .OrderBy(() => itemGroupAlias.Name).Asc;

关于nhibernate - 使用 QueryOver 的相关实体中的 Fluent NHibernate 按属性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5851324/

相关文章:

mysql如何按用户定义的顺序排序/按字段上的项目数排序

c# - 如果 keySelector 很慢,如何优化 LINQ OrderBy?

nhibernate - 配置 Fluent NHibernate 映射以仅允许 INSERT?

nhibernate - 流畅的 NHibernate 一对多插入连接表?

c# - 使用无状态 session 延迟查找字典值

c# - CaSTLe ActiveRecord 的 ActiveRecordMediator<> 支持 LINQ 吗?

fluent-nhibernate - Fluent NHibernate 映射错误(Id 列)

fluent-nhibernate - 如何使用流畅的 nhibernate 设置 generate_statistics = true

nhibernate - PrimaryKeyNamingConvention Fluent Automapping

sql - 在子查询中排序