在 NHibernate 中加入条件



我正在努力与NHibernate实现简单的连接。

这是我所拥有的:

邮.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值。

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

冬眠可以做到吗?

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

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

有关更多信息,您可以在此处查看。

或者使用这样的子查询。

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

最新更新