2016-03-21 18 views
0

Verilen gibi bir şey:NHibernate, Func <T> parametresinin nasıl atanmasını sağlar.

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, yukarıdaki değeri bu anlamaya denedim JoinAlias

2. argüman geçti değişkenlere olabilir ve ben olsun en yakın döküm edilir MemberExpression Body ConstantExpression ifadeyi döküm ardından ancak referans geçti.

nasıl NH Bunu başarmak gelmez değiştirmez üyesini atamak yansıma kullanarak, salt okunur olduğu .Value yaratır?

cevap

1

Yapmıyor.

Bu sadece sözdizimi. Hiçbir şey ne posts ne de author'a atanmamıştır. Bu değişkenleri, here alınan örnekte aşağıdaki gibi daha sonraki kısıtlamalar, içinde takma adları olarak kullanılmasına izin vermek için sadece burada şunlardır:

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

O QueryOver çalışan bir SQL sorgusuna tüm bu çevirmek için izin verir. (Sanırım ilk olarak HQL, daha sonra SQL'e dönüştürülür.) Ama yürütmeden sonra, değişkenlerinize dokunulmamış ve hala null'u bulmalısınız.