NHibernate HQL tương đương với từ khóa TOP của T-SQL là gì?NHibernate HQL tương đương với T-SQL TOP TOP
Ngoài ra, cách thức không HQL để nói cho tôi 15 môn học đầu tiên là gì?
NHibernate HQL tương đương với từ khóa TOP của T-SQL là gì?NHibernate HQL tương đương với T-SQL TOP TOP
Ngoài ra, cách thức không HQL để nói cho tôi 15 môn học đầu tiên là gì?
Nó thực sự khá dễ dàng trong HQL:
var top15 = session.CreateQuery("from SomeEntity")
.SetFirstResult(0)
.SetMaxResults(15)
.List<SomeEntity>();
Không biết làm thế nào để làm điều này bằng cách sử dụng API tiêu chí mặc dù.
Tiêu chuẩn Phương pháp API:
ICriteria criteria = DaoSession.CreateCriteria(typeof(T));
criteria.SetFirstResult(StartIndex);
criteria.SetMaxResults(MaximumObjects);
return criteria.List<T>();
+1. Tôi sẽ phải xem xét MaximumObjects này. Tuyệt đấy. – BuddyJoe
MaximumObjects chỉ là một biến số nguyên để báo cho SetMaxResults có bao nhiêu đối tượng cần trả về. Trong trường hợp của bạn, bạn có thể mã cứng 15 thay vào đó, tức là tiêu chí.SetMaxResults (15); –
Haha ... nói cách khác nó giống hệt với CreateQuery() sau khi cá thể được tạo. –
Để hoàn chỉnh, đây là cách để làm điều đó với QueryOver
API được giới thiệu trong NHibernate 3.0:
var top15 = session.QueryOver<SomeEntity>().Take(15).List();
Ném trong một .Skip(someInt)
nếu bạn cần phải xác định một chỉ mục bắt đầu, ví dụ để phân trang.
mookid8000 đang cung cấp thông tin sai lệch.
không có cách nào thiết lập SQL TOP N với HQL :(
nó luôn luôn tải tất cả các bảng để NET và lấy TOP, mà chỉ là đồng bằng ngu ngốc!
Từ NHibernate 3.2 bạn có thể sử dụng SKIP n/TAKE n
trong HQL ở phần cuối của các truy vấn Nó có thể rất hữu ích trong việc truy vấn con nơi bạn không thể sử dụng SetMaxResults
Ví dụ:..
select l, (select u from User u where u.Location = l order by u.Date asc take 1)
from Location l
+1. Huh khá lạ. Tôi nghĩ câu trả lời sẽ là một phần của chuỗi HQL "đường hầm". Hấp dẫn. – BuddyJoe
Câu trả lời này thực sự là kết hợp của HQL và tiêu chí API –
yea..it về cơ bản giống như tiêu chí ... chỉ thay thế bằng 'CreateCriteria()' –
dotjoe