2017-10-06 108 views
0

我与NHibernate的努力实现一个简单连接。加入标准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"); }); 
    } 
} 

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

我想改变这种行为,以便能够加入用户表中我的查询,让每个岗位的“用户”的成员是由用户的用户名顶岗名单。

能冬眠做到这一点?

回答

0

NHibernate的具有一定的查询API的,唯一可以支持无关的实体之间的连接:

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

欲了解更多信息,你可以看到here

或者使用子查询像this

或者像this实体之间添加引用。