У меня есть словарь, который я создаю, используя Fluent NHibernate. Словарь имеет тип сложного ключа CultureInfo
. Моя база данных не может хранить этот тип, поэтому я хочу использовать его строковое представление.
В сопоставлениях, отличных от отображений в словарях, я могу успешно сопоставить CultureInfo
-свойства, используя соглашение о типе пользователя. Теперь я задаюсь вопросом, как это сделать для диетических сопоставлений.
Вот сущность, которая содержит словарь:
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");
}
Это отображение (очевидно) вызывает следующую ошибку:
Не удалось преобразовать значение параметра из CultureInfo в строку.
Я знаю, что в NHibernate есть реализация пользовательского типа для CultureInfo
(я использую его для свойств сопоставления), но как мне указать это в переопределении сопоставления?