2014-07-18 27 views
6

Tôi đang sử dụng Nhibernate. Tôi đang viết truy vấn thông qua phương pháp truy vấn. Tôi có thể viết và điều khoản như trong mã dưới đây. Làm việc tốt.Sử dụng OR khoản trong truy vấn trong NHibernate

db.QueryOver(Of Users)() 
    .Where(Function(x) x.Role = "Guest") 
    .And(Function(x) x.Block = 0) 
    .And(Function(x) x.APPID = appId) 
    .List(); 

Nhưng tôi muốn sử dụng Or khoản thay vì And, hoặc kết hợp cả hai. Làm thế nào tôi có thể thực hiện điều này. Cảm ơn

Trả lời

17

Dưới đây là mô tả cách chúng tôi có thể xây dựng OR với NHiberante

Cú pháp (trong C# như thẻ nói) là:

  • Restrictions.Or(restriction1, restriction1)
  • Restrictions.Disjunction().Add(restriction1).Add(restriction2).Add(...

Trong trường hợp này, nó có thể là như thế này (một lần nữa trong C#, trong khi câu hỏi dường như sử dụng VB):

db.QueryOver<Users>()() 
    .Where((x) => x.Role == "Guest") 
    .And(Restrictions.Or(
     Restrictions.Where<Users>((x) => x.Block == 0) 
    , Restrictions.Where<Users>((x) => x.APPID == appId) 
)) 
    .List<Users>(); 
+2

nên nó không được Restrictions.Where thay vì Restrictions.On? – Rashack

+0

@Rashack, cảm ơn, bạn đã đúng, 'Hạn chế.Where' thay vì' Restrictions.On' –

Các vấn đề liên quan