0

我有一个名为的类Property,它包含Room对象的集合

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

房间映射

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);
        }

物业图

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();
        }

我要做的是从选定的属性对象加载房间对象的集合。我使用这种语法

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

但只有属性对象是从数据库加载的。房间已添加到数据库中,但如何获取它们?如果我尝试访问 property._rooms 集合是空的。

谢谢

解决了

问题在于 Inverse 语句。我不使用双向关联,所以我删除了它并且它可以工作。

4

2 回答 2

1

问题在于 Inverse 语句。我不使用双向关联,所以我删除了它并且它可以工作。

于 2012-04-10T21:18:16.070 回答
0

您可以尝试使用 QueryOver 而不是 Ling Provider:

session.QueryOver<Property>()
    .Where(property => property.Id == propertyId)
    .Fetch(property => property.Rooms).Eager
    .TransformUsing(Transformers.DistinctRootEntity)
    .SingleOrDefault<Property>();
于 2012-04-10T21:15:16.630 回答