1

それを FNH でマッピングしようとしたところ、多くの問題が発生し、最終的に FNH が不足しており、もう維持されていないことがわかったので、これまでのところ動作しますがドキュメントがない Nhibernate MappingByCode を試すことにしました...

IDictionary をマップする方法が見つかりません

        Map(x => x.EntityDict,
            m =>
            {
                m.Key(k => k.Column("ParentID"));
            },
            km =>
            {
                km.//??ManyToMany
            vm =>
            {
                vm.//??ManyToMany
            }
            );

km(キー マッピング) のオプションは、要素 (値の型)/コンポーネント (同じテーブルの内部オブジェクト)/ManyToMany (このコンテキストではよくわかりません) です。

最も論理的なことのように見えるので、両方で ManyToMany を使用しようとしましたが、機能しませんでした。

ディクショナリを保存するときに SaveUpdate は成功しましたが、DB に正しく保存されず、ディクショナリを取得できませんでした。

編集:ここに辞書構造のサンプルがあります

public class Entity1Map : ClassMapping<Entity1>
{
    public Entity1Map()
    {
         Id(x=> x.ID,m=>m.Generator(Generators.Guid));
    }
}

public class Entity2Map : ClassMapping<Entity2>
{
    public Entity2Map()
    {
         Id(x=> x.ID,m=>m.Generator(Generators.Guid));
    }
}


public class Entity3 { public IDictionary<Entity1,Entity2> Dict { get;set; } }
public class Entity3Map : ClassMapping<Entity3>
{
    public Entity3Map()
    {
         Id(x=> x.ID,m=>m.Generator(Generators.Guid));

         //Map Dict??
    }
}

テーブル構造について -

Entity1 Table : ID Column
Entity2 Table : ID Column
Entity3 Table : ID Column
Dict Table : Entity3_ID,Entity1_ID,Entity2_ID

別のデータベースに保存され、DB から再作成される場合、このテーブル構造である必要はありません

@ダニエル-ここにhbmがあります

<map name="Targets" table="Dict">
  <key column="Entity3ID" />
  <map-key-many-to-many class="Entity1" column="Entity1ID" />
  <many-to-many class="Entity2" column="Entity2ID" />
</map>

編集3(私は思う):

        var entity3 = new Entity3();
        var entity1 = new Entity1();
        var entity2= new Entity2();
        entity3.Dict[entity1] = entity2;

        using (var session = GetSession())
        {
            session.SaveOrUpdate(entity1);
            session.SaveOrUpdate(entity2);
            session.SaveOrUpdate(entity3 );
            session.Flush();
        }
4

1 に答える 1