2011-04-29 133 views
6

我有使用Fluent NHibernate映射的字典。該字典有一個複雜的密鑰類型CultureInfo。我的數據庫不能存儲該類型,所以我想使用它的字符串表示。如何使用FluentNHibernate映射覆雜鍵類型(CultureInfo)的字典

在字典映射以外的映射中,我可以使用用戶類型約定成功映射CultureInfo -properties。現在我想知道如何做二元映射。

下面是一個包含詞典中的實體:

public class MultilingualPhrase : Entity 
{ 
    private IDictionary<CultureInfo, string> languageValues; 

    public virtual IDictionary<CultureInfo, string> LanguageValues 
    { 
     get 
     { 
      return languageValues; 
     } 
    } 
} 

下面是該實體的自動映射覆蓋:

public void Override(AutoMapping<MultilingualPhrase> mapping) 
{ 
    mapping 
     .HasMany(n => n.LanguageValues) 
     .Access.ReadOnlyPropertyThroughCamelCaseField() 
     .AsMap<string>("CultureName") 
     .Element("Phrase") 
     .Table("MultilingualPhraseValues"); 
} 

這種映射(顯然)導致以下錯誤:

Failed to convert parameter value from a CultureInfo to a String.

我知道NHibernate有一個類型自定義類型實現CultureInfo(我正在使用它來映射屬性),但我如何在我的映射覆蓋中指定它?

回答

1

這NH 3.1正常工作與FNH類映射(不知道自動映射)和FNH 1.2:

HasMany(n => n.LanguageValues) 
    .Access.ReadOnlyPropertyThroughCamelCaseField() 
    .AsMap<CultureInfo>("CultureName") 
    .Element("Phrase") 
    .Table("MultilingualPhraseValues"); 
+0

美妙,我想我是太專注於明確的類型上AsMap作爲目標類型,而不是源類型。謝謝! – 2011-05-06 09:33:30