簡體   English   中英

NHibernate中的加入條件

[英]Join criteria in 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的user列。

這是我現在如何從數據庫中獲取所有帖子的方法:

// 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

有關更多信息,請參見此處

或使用類似這樣的子查詢。

或者像這樣在實體之間添加引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM