2009-09-11 139 views

回答

2

要映射列表作爲詞典:

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

我沒有用它;所以不能舉個例子。

有看看維基: Cached version of the pageActual page 我已經給了網頁的緩存版本的網站似乎將下降。

+0

這並不能真正幫助用戶。當然,他能夠查找正確的方法,但方法的*用法*並不明顯。 – Sebazzz 2016-07-27 09:21:04

6

使用一個簡單的類關係,如以下幾點:

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

Bar.Type作爲重點領域進入:

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; } 
} 

您可以通過這種方式與功能NHibernate映射此字典。

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"); 
} 

這將正確映射Dictionarydict_table和使用column_id它關聯到基本ID。

請注意,如果您想在字典中使用Enum作爲Key,則應該注意,可以使用NHibernate.Type.EnumStringType<MyEnum>代替.AsMap<string>中的字符串來使用字符串值而不是Ordinal。