2010-12-04 12 views
2

この例ではすべてを見てきましたが、かなり珍しいようです。うまくいけば、いくつかのNHibernateの達人が知っているだろう。FluentNHibernateで外部キーを使用してValueObjectコレクションをマップする方法

私は、値オブジェクトを理解することによって、値オブジェクトである次のクラスを持っています。すべてのユーザが質問に1つ以上のタグを割り当てる能力を持っていると仮定します(Stack Overflowと考える)。タグにはプライマリキーは必要ありませんが、私はそこにあるValueObjectsの例のほとんどとは異なり、UserとQuestionへの参照を保持しています。

{ "実体『タグ』はマップされたIDを持っていないあなたのIDプロパティをマップするためにID方式を使用して、例えば::。。同上(

public class Tag : ValueObject 
{ 
    public virtual User User { get; set; } 
    public virtual Question Question { get; set; } 
    public virtual string TagName { get; set; } 
} 

public class User 
{ 
    public virtual IList<Tag> Tags { get; set; } 
} 

public class Question 
{ 
    public virtual IList<Tag> Tags { get; set; } 
} 

とにかく、私は次のエラーを取得していますX => x.Id) "}

Iユーザーと質問に対する次の流暢NHibernateのマッピングがあります。

public void Override(AutoMapping<XXX> mapping) 
     { 
      mapping.HasMany(x => x.Tags).Component(c => 
      { 
       c.Map(x => x.TagName); 
       c.Map(x => x.Question); 
       c.Map(x => x.User); 
      }); 
     } 

はいつものように、任意の考えは非常に高く評価します。

遅く更新されました。さて、これは値オブジェクトではない可能性があります。アイデンティティは必要ありませんが、複数の場所で使用できるものではないと思います。オブジェクトに無用なIdフィールドを強制しないでこれを処理する方法はありますか?その値オブジェクトので、その後

public void Override(AutoMapping<XXX> mapping) 
    { 
     mapping.HasMany(x => x.Tags).AsBag().Component(c => 
     { 
      c.Map(x => x.TagName); 
      c.References(x => x.Question); 
      c.References(x => x.User); 
     }); 
    } 

しかし、あなたカントクエリ(リストすべて)タグ:

答えて

0

はこれを試してみてください。

関連する問題