2011-07-12 24 views
21

tôi phải viết một truy vấn trong thành thạo NHibernate chothành thạo NHibernate đâu khoản

Select * from Users where UserName = 'Abcd' AND Password = '123456'

Làm thế nào để tạo ra trên truy vấn với session.CreateCriteria

Trả lời

46

thành thạo NHibernate là một khuôn khổ Mapping thay thế cho các tập tin HBM mặc định (Lập bản đồ Hibernate)

NHibernate tự cung cấp các API truy vấn khác nhau như

  • HQL - Hibernate Truy vấn Ngôn ngữ
  • Tiêu chuẩn
  • Query - (LINQ tương đương)
  • QueryOver - (Tiêu chuẩn gõ mạnh)
  • SQL

Đối với Tiêu chuẩn truy vấn của bạn sẽ là một cái gì đó dọc theo dòng của:

var users = session.CreateCriteria<Users>() 
        .Add(Restrictions.Eq("UserName", "Abcd")) 
        .Add(Restrictions.Eq("Password", "123456")) 
        .List<Users>(); 

Truy vấn:

var users = from u in session.Query<Users>() 
      where u.UserName == "Abcd" 
      && u.Password == "123456" 
      select u; 

hoặc

var users = session.Query<Users>() 
        .Where(x => x.UserName == "Abcd" && u.Password == "123456"); 

QueryOver:

var users = session.QueryOver<Users>() 
        .Where(x => x.UserName == "Abcd") 
        .And(u.Password == "123456") 
        .List(); 
+0

nhờ trả lời tuyệt vời. Tôi có thể trả lại Người dùng làm loại trong các truy vấn trên không? – Saad

+1

@Saad - Một người dùng duy nhất? Thay vì một Bộ sưu tập? Chắc chắn rồi. Bạn có thể xem 'SingleOrDefault()' trên Query/QueryOver, thay vì 'List()'. Tôi không chắc bạn chọn phương pháp nào trên Tiêu chí để thực hiện một kết quả. Không có Visual Studio tiện dụng. – Phill

+0

nhờ SingleOrDefault() làm việc cho tôi. – Saad

0

Query Trong

var users = session.QueryOver<Users>() 
        .Where(x => x.UserName == "Abcd" && x.Password == "123456") 
        .List(); 
Các vấn đề liên quan