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

Ling Provider の代わりに QueryOver の使用を試すことができます。

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