2017-11-01 22 views
1

で熱心な負荷複数のコレクション私は、複数のコレクションプロパティと、次のエンティティを持って考えると...流暢NHibernateは:マッピング

public class Parent 
{ 
    public virtual int Id { get; set;} 
    public virtual ICollection<FirstChild> FirstChildren { get; set; } 
    public virtual ICollection<SecondChild> SecondChildren { get; set; } 
} 

は、私ができる方法が同時に流暢NHibernateはを使用して、これらの特性の両方の熱心な負荷がありますか?または、Parentに関連付けられたすべての要素を単純に熱心に読み込みます。

私は私のマッピングとして、次のしている場合は...

public ParentMapping() 
{ 
    Id(p => p.Id).GeneratedBy.Identity(); 

    HasMany(p => p.FirstChildren) 
     .Table("FirstChildren") 
     .KeyColumn("Id") 
     .Inverse() 
     .Cascade.AllDeleteOrphan() 
     .Fetch.Join(); 

    HasMany(p => p.SecondChildren) 
     .Table("SecondChildren") 
     .KeyColumn("Id") 
     .Inverse() 
     .Cascade.AllDeleteOrphan() 
     .Fetch.Join(); 
} 

エラーになり上記のマッピング:マッピングでFetch.Join()を使用

'Cannot simultaneously fetch multiple bags'.

がI場合は動作しますそれらのプロパティのうちの1つでのみ使用します。

私はToFuture()クエリを使用してすべてを読み込むことができますが、マッピングでこれを行うことをお勧めします。

答えて

0

この機能を使用するには、ICollectionの代わりにISetを使用する必要があります。

herehereをご覧ください。

+1

ISetを使用せずに行う方法はありますか?私はコレクションのプロパティのいずれかでFetch.Join()を使用するかのようにうまくいきます。問題が発生した複数のプロパティでそれを使用しているときだけです。 – TomJerrum

関連する問題