2016-03-21 61 views
0

鑑於這樣的:NHibernate如何實現Func <T>參數的分配。

Post posts = null; 
Author author = null; 
blog = session.QueryOver<Blog>() 
       .Where(x => x.Id == 1) 
       .JoinAlias(x => x.Posts,() => posts) 
       .JoinAlias(() => posts.Author,() => author) 
       .SingleOrDefault(); 

在NHibernate的,上面的數值可以是傳入的JoinAlias

我嘗試了第二個參數變量來算出這個和我得到的最接近的是鑄造身體MemberExpression隨後鑄造的表達,但ConstantExpression創建.Value其是隻讀的,使用反射來分配構件不會修改參考傳入。

如何NH實現這一目標?

回答

1

它沒有。

這只是語法。沒有任何內容不分配給posts也不分配給author。這些變量只在這裏允許使用它們作爲在以後的限制,例如在下面的例子here取別名:

Cat catAlias = null; 
Kitten kittenAlias = null; 
IQueryOver<Cat,Cat> catQuery = 
    session.QueryOver<Cat>(() => catAlias) 
     .JoinAlias(() => catAlias.Kittens,() => kittenAlias) 
     .Where(() => kittenAlias.Name == "Tiddles"); 

它允許QueryOver翻譯所有的工作SQL查詢。 (我猜首先是HQL,然後轉換爲SQL。)但執行後,你應該找到你的變量不變,仍然null

相關問題