2016-04-02 27 views
0

Aşağıdaki eşleme programına sahip bir Varlık Programım var.Nhibernate "Özellik istisnasını çözemiyor" atar

References(c => c.Region).Column("FK_RegionId").Fetch.Join(); 
References(c => c.RequestType).Column("FK_RequestTypeId ").Fetch.Join(); 
References(c => c.CategoryCode).Column("FK_CategoryCodeId").Fetch.Join(); 
References(c => c.HouseHoldSize).Column("FK_HouseHoldSizeId").Fetch.Join(); 

Ve Hazırda sorgusu

return session.QueryOver<Program>().Where(x => x.Region.ID == fields.Region && x.RequestType.ID == fields.RequestType 
      && x.HouseHoldSize.Size == fields.HouseholdSize).SingleOrDefault(); 

aşağıdaki kullanarak getirmek çalışıyorum Ama buna mülkiyet HouseHoldSize.Size çözemezse diyerek istisna atar. Neler olup bittiğini detaylandırabilir mi? Şimdiden teşekkürler :)

+0

Benim tahminim yanlış olduğunu ve bu yüzden önceki cevabı sildiniz. Ancak bunun hakkındaki yorumunuz, en azından kısmi bir çözüm bulduğunuzu bilmenizi sağlar. Bence soruyu, yeterince iyi olmayan bir çözüm olarak eklemek ve hala tüm endişelerinizi çözmediğini söylemeniz gerekir. –

cevap

1

Birleştirme olmadan başka bir varlığın özelliğini kullanmaya çalıştığınız anlaşılıyor. QueryOver kullanıyorsanız bir birleştirme kullanmanız gerekir. Gerçi linq sağlayıcı ile bunu yapabilirsiniz:

return session.Query<Program>().Where(x => x.Region.ID == fields.Region && x.RequestType.ID == fields.RequestType 
     && x.HouseHoldSize.Size == fields.HouseholdSize).SingleOrDefault(); 

sen bakmak queryover kullanmak istiyorsanız:

http://nhibernate.info/blog/2009/12/17/queryover-in-nh-3-0.html

+0

Bence bunun için zaten bir yorum ekledim. Ama neyse, sorun Nhibernate'de "JoinQueryOver" kullanılarak çözüldü. Sadece "Fetch.Join()" nin neden işe yaramayacağını bilmek istiyorum ... – Jajan

+1

Sorunun ne anlama geldiği tam olarak bu değildi. Fetch.Join() 'sadece eşleme tarafındaki" istekli "yükleme verileri için kullanılır. Yüklü istekli olsa bile, yine de "QueryOver" içindeki başka bir varlıktaki özellikleri kullanamazsınız. Bunu yapmak için linq sağlayıcısını kullanmalı veya "QueryOver" içinde açık bağlantılar yapmalısınız. –