2012-04-12 27 views
9

Tôi có điều này:NHibernate GetAll

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; 
    } 
} 

Và tôi có thể làm các thao tác CRUD với bất kỳ câu hỏi trong cơ sở dữ liệu.
Nhưng tôi cần hiển thị tất cả các câu hỏi, cách nhận chúng?
trong các câu hỏi cơ sở dữ liệu của tôi có id: 1,2,3,100. Tôi không nghĩ rằng, đó là thông qua tất cả các Id có thể - có thể chấp nhận ...

Trả lời

20

Bạn có thể sử dụng phương pháp mở rộng Query<T> từ namespace NHibernate.Linq hoặc bạn có thể sử dụng ISession.QueryOver<T>:

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