Я справился с этой конкретной проблемой, так как я еще новичок в NHibernate / FluentNHibernate.Я опишу проблему подробно, но прежде чем я это сделаю, я хотел бы отметить, что я могу изменить как модель домена , так и базовую базу данных, как я считаю нужным.Однако у меня есть конкретные причины для моего текущего дизайна, и я хотел бы придерживаться его, если смогу.
У меня есть объект User.У пользователя есть некоторые предпочтения, такие как выбранная им культура («en-US» / «fr-CA» и т. Д.) И предпочитаемая им система конвертации (Metric / British Imperial и т. Д.).Есть и другие предпочтения, и дальнейшие предпочтения могут (и будут) добавляться со временем.Поэтому я не хочу представлять предпочтения в виде столбцов в основной пользовательской таблице.Скорее, я хочу, чтобы структура таблицы выглядела так (псевдо-SQL):
Table Preference (int Id, nvarchar(50) Description)
Table PreferenceOption (bigint Id, int PreferenceId, nvarchar(50) Value)
Table UserPreferences (int Id, uniqueidentifier UserId, bigint PreferenceOptionId)
Один параметр (т. Е. «Культура») может иметь несколько параметров (например, «en-GB», «fr-CA»).).Предпочтения пользователя хранятся в таблице UserPreferences, которая имеет внешний ключ к таблице PreferenceOption.
Я бы хотел, чтобы модель моего домена выглядела следующим образом:
public class User
{
public virtual Guid {get;set;}
public virtual Preferences {get;set;}
}
public class Preferences
{
public virtual CultureInfo Culture{get;}
public virtual ConversionType ConversionType {get;}
}
Я представлял, что я 'попробуйте загрузить все настройки, принадлежащие пользователю, в коллекцию (в классе Preferences) и позволить свойствам выполнить соответствующее преобразование в CultureInfo и ConverstionType (пользовательское перечисление) соответственно.
Я был бы очень признателендля любых указателей на это.