2012-04-10 12 views
0

Ich habe eine Klasse namens Property dieLast Sammlung von Objekt Einheit in nhibernate

public class Property : EntityBase<Property> 
    { 
     public IList<Room> _rooms; 

Zimmer Mapping

public RoomMap() 
     { 
      Not.LazyLoad(); 
      Id(x => x.ID).Not.Nullable().UnsavedValue(int.MinValue).GeneratedBy.HiLo("100"); 
      Component(x => x.RoomDetails); 
      Map(x => x.RoomType).CustomType<RoomType>(); 
      Component(x => x.Area); 
      //HasMany(x => x.RentPriceDetails); 
     } 

Immobilien Karte

public PropertyMap() 
     { 
      Not.LazyLoad(); 
      Id(x=>x.ID).UnsavedValue(int.MinValue).Not.Nullable().GeneratedBy.HiLo("100"); 
      Component(x => x.Address); 
      References(x => x.OwnerOfProperty); 
      HasMany(x => x._rooms).Inverse().Cascade.All(); 
     } 

Was Sammlung von Room Objekte hält Ich bin versuchen zu tun ist, Sammlung von Raumobjekten von selecte zu laden d Eigenschaftsobjekt. Ich verwende diese Syntax

var property = session.Query<Property>().FetchMany(x => x._rooms).First(x => x.ID == propertyId); 

, aber nur Eigenschaft Objekt wird aus der Datenbank geladen. Die Zimmer werden in der Datenbank hinzugefügt, aber wie bekommt man sie? Wenn ich versuche, auf property.rooms zuzugreifen, ist die Sammlung leer.

Dank

GELÖST

Problem mit Inverse-Anweisung war. Ich verwende keine bidirektionalen Assoziationen, also habe ich es entfernt und es funktioniert.

+0

Wenn Sie es gelöst haben, dann posten Sie es als Antwort selbst und markieren Sie es als richtig. Auf diese Weise wird es nicht in den Listen "Unbeantwortete Fragen" angezeigt. – RBarryYoung

Antwort

0

können Sie versuchen, QueryOver zu verwenden anstelle von Ling Provider:

session.QueryOver<Property>() 
    .Where(property => property.Id == propertyId) 
    .Fetch(property => property.Rooms).Eager 
    .TransformUsing(Transformers.DistinctRootEntity) 
    .SingleOrDefault<Property>(); 
1

Problem mit Inverse-Anweisung war. Ich verwende keine bidirektionalen Assoziationen, also habe ich es entfernt und es funktioniert.

+1

Markieren Sie dies als die richtige Antwort (klicken Sie auf das Häkchen auf der linken Seite) – RBarryYoung

Verwandte Themen