3

Fluent NHibernateを使用して単純なDictionaryプロパティをマッピングする最良の方法は何ですか?

4

3 に答える 3

6

次のような単純なクラス関係を使用します。

public class Foo {
    public virtual IDictionary<string, Bar> Bars { get; set; }
}

public class Bar {
    public virtual string Type { get; set; }
    public virtual int Value { get; set; }
}

次のように、FluentNHibernateを使用してこれをマッピングできます。

mapping.HasMany(x => x.Bars)
       .AsMap(x => x.Type);

Bar.Type辞書のキーフィールドとして使用される場所。

于 2009-12-12T05:41:06.013 に答える
6
public class PersistedData 
{
    public virtual IDictionary<key, value> Dictionary { get; set; }
}

public class PersistedDataMap : ClassMap<PersistedData>
{
    HasMany(x => x.Dictionary)
            .Table("dict_table")
            .KeyColumn("column_id")
            .AsMap<string>("key")
            .Element("value");
}

Dictionaryこれはテーブルに適切にマップされ、それをベースIDに関連付けるためにdict_table使用されます。column_id

補足として、辞書のキーとして列挙型を使用する場合は、序数の代わりに文字列値を使用するために、文字列の代わりに使用NHibernate.Type.EnumStringType<MyEnum>できることに注意してください。.AsMap<string>

于 2014-10-16T07:35:11.190 に答える
3

リストを辞書としてマップするには:

HasMany(x => x.Customers)
  .AsMap();

私はそれを使用していません。例をあげることはできません。

ウィキを見てください:ページのキャッシュバージョン実際 のページサイトがダウンしているように見えるので、ページのキャッシュバージョンを指定しました。

于 2009-09-13T13:02:27.900 に答える