NHibernate 中的加入条件

问题描述 投票:0回答:1

我正在努力使用 NHibernate 来实现简单的连接。

这是我所拥有的:

Post.cs:

public class Post
{
    public virtual int id { get; set; }
    public virtual string user { get; set; }
    public virtual string message { get; set; }
}

public class PostMap : ClassMapping<Post>
{
    public PostMap()
    {
        Table("post");

        Id(x => x.id, map => { map.Column("id"); });
        Property(x => x.user, map => { map.Column("user"); });
        Property(x => x.message, map => { map.Column("message"); });
    }
}

用户.cs:

public class User
{
    public virtual int id { get; set; }
    public virtual string user_identifier { get; set; }
    public virtual string username { get; set; }
}

public class UserMap : ClassMapping<User>
{
    public UserMap()
    {
        Table("user");

        Id(x => x.id, map => { map.Column("id"); });
        Property(x => x.user_identifier, map => { map.Column("user_identifier"); });
        Property(x => x.username, map => { map.Column("username"); });
    }
}

如您所见,我有 2 个“实体”帖子和用户。帖子有一个代表 user_identifier 的用户列。

这是我现在如何从我的数据库中获取所有帖子:

// CriteriaGenerator is only used here to create a criteria object based on filters in the filter object
ICriteria crit = CriteriaGenerator.GenerateCriteria<Post>(session, filters);

IList<Post> posts= crit.List<Post>();

有了这个,我得到了一个帖子对象列表,并且每个人在用户成员中都有 user_identifier 值。

我想更改此行为,以便能够在我的查询中加入用户表,以获取帖子列表,其中每个帖子的“用户”成员都被用户的用户名替换。

冬眠能做到吗?

c# join nhibernate criteria
1个回答
0
投票

NHibernate 有一些查询 API,只有一个可以支持不相关实体之间的连接:

from user in session.Query<User>() 
join post in session.Query<Post>() 
on user.user_identifier equals post.user

有关更多信息,您可以在这里.

或者使用像this这样的子查询。

或者在像this这样的实体之间添加引用。

© www.soinside.com 2019 - 2024. All rights reserved.