2012-02-12 13 views
0

IDictionary<Entity, Component>をどのようにマップできますか?私はこのようにしました:MappingByCodeを使用してIDictionary <Entity、Component>をマッピングします

Map<GeneralResourceType, Quantity>(x => x.BookedResources, 
c => 
    { 
     c.Key(ck => ck.Column("ProposedAction")); 
     c.Table("BookedResources"); 
    }, 
k => k.ManyToMany(key => key.Column("ResourceTypeId")), 
r => r.Component(qc => QuantityMapping.Mapping())); 

(ここで、GeneralResourceTypeはマップされたエンティティであり、QuantityはValueObjectです)。しかし、BuildSession()の呼び出し中に例外がスローされます。

NHibernate.MappingException:BookedResourcesテーブルからの関連付けは、マップされていないクラス{MyNamespace} .Quantityを参照します。 Seamのように、数量のClassMappingを見つけようとしますが、値の部分はComponentとしてマップされます。

+0

何が出ままに 'R => r.Component(QC => QuantityMapping.Mapping()) '? – Firo

+0

同じ例外がスローされます。試してくれてありがとう、私はこれを修正することができますどのように多くのアイデアを持っていない原因で... –

+0

あなたはこれを理解する?私は同じ問題を抱えています。 – dtabuenc

答えて

0
  • まずバリアント:ジェネリッククラスをComponentMappingから継承された別のクラスの

    1. Mapコンポーネント。
    2. 地図辞書プロパティは、次のように:

      Map(x => x.BookedResources, c => 
      { 
          //any options access, cascade etc 
      }); 
      
  • 第二の変形(インライン):

    Map(x => x.BookedResources, x => 
        { 
         //any options access, cascade etc 
        }, 
        x => x.Element(), 
        x => x.Component(c => 
        { 
         c.Class<Quantity>(); 
         c.Property(p => p.Amount); 
         c.Property(p => p.Unit); 
         // any other properties 
        } 
    )); 
    
関連する問題