2012-12-11 123 views
0

我寫的後續作爲一個NHibernate的查詢,但無法找到使用QueryOver作爲HQL的解決方案: -NHibernate的查詢使用QueryOver HQL

IQuery query = SessionFactoryContext.GetCurrentSession() 
    .CreateSQLQuery(
@"SELECT s.UserID, 
    Username, 
    Email,Password, 
    FirstName, 
    LastName, 
    Address1, 
    Address2, 
    City, 
    County, 
    PostalCode, 
    Country 
FROM [dbl].[dbo].[User] s 
    LEFT OUTER JOIN [dbl].[dbo].[groupmembership] g ON s.UserrID = g.UserrID 
WHERE g.UserID IS NULL 
    OR (g.GroupID NOT IN (" + groupID + ") )") 

    .SetResultTransformer(Transformers.AliasToBean(typeof(User))); 

return (IList<Subscriber>)query.List<User>(); 

是否有任何可能的方式,這可以寫成一個NHibernate的查詢?

非常感謝您的幫助,

+0

對不起,但不清楚是什麼麻煩。你有「UserrID」。有兩個R的用戶。您希望將SQL轉換爲HQL,是嗎?如果是,請再次發佈,更清楚。刪除不需要的東西,比如CurrentSession和SetResultTransformer - 還是給你帶來麻煩?另外,發佈相關類的代碼也不會有什麼壞處。 –

回答

0
.CreateSQLQuery(
    @"FROM User u left join u.GroupMembership g 
    WHERE g.User is null 
     OR g.GroupId not in (:groupids)" 
.SetParameterList("groupids", groupIds) 
.List<User>(); 

鑑於GroupMembership是用戶和用戶和GroupId的一個屬性是GroupMembership的性能。 (如果GroupId是主鍵,則可以簡化)。

相關問題