冬眠得到全部

本文关键字:全部 冬眠 | 更新日期: 2023-09-27 18:30:57

>我有这个:

public static class Domain
{
    private const string sessionKey = "NHib.SessionKey";
    private static ISessionFactory sessionFactory;
    public static ISession CurrentSession
    {
        get
        {
            return GetSession(true);
        }
    }
    static Domain()
    {
    }
    public static void Init()
    {
        sessionFactory = new Configuration().Configure("Nhibernate.cfg.xml").BuildSessionFactory();
    }
    public static void Close()
    {
        ISession currentSession = GetSession(false);
        if (currentSession != null)
        {
            currentSession.Close();
        }
    }
    private static ISession GetSession(bool getNewIfNotExists)
    {               
        ISession currentSession;
        if (HttpContext.Current != null)
        {
            HttpContext context = HttpContext.Current;
            currentSession = context.Items[sessionKey] as ISession;
            if (currentSession == null && getNewIfNotExists)
            {
                currentSession = sessionFactory.OpenSession();
                context.Items[sessionKey] = currentSession;
            }
        }
        else
        {
            currentSession = CallContext.GetData(sessionKey) as ISession;
            if (currentSession == null && getNewIfNotExists)
            {
                currentSession = sessionFactory.OpenSession();
                CallContext.SetData(sessionKey, currentSession);
            }
        }
        return currentSession;
    }
}
public class Question
{
    public virtual int Id { get; protected set; }
    public virtual string Text { get; set; }
    public virtual string Answer1 { get; set; }
    public virtual string Answer2 { get; set; }
    public virtual string Answer3 { get; set; }
    public virtual string Answer4 { get; set; }
    public virtual int NumberOfRight { get; set; }
    public override string ToString()
    {
        return this.Text;
    }
}

我可以对数据库中的任何问题进行 CRUD 操作。
但是我需要展示所有问题,如何获得它们?
在我的数据库中,问题有 ID : 1,2,3,100。我不认为,通过所有可能的 ID - 是可以接受的......

冬眠得到全部

您可以使用

命名空间NHibernate.LinqQuery<T>的扩展方法,也可以使用ISession.QueryOver<T>

var allQuestions = session.Query<Question>().ToList();
// or
var allQuestions = session.QueryOver<Question>().List();