У меня есть база данных (которая не может быть изменена) с целым грузом ценностей, которые хранятся в двух столбцах:NHibernate - Карта несколько столбцов базы данных для одного объекта
В настоящее время каждый столбец отображается одно свойство, и мой домен объект выглядит следующим образом:
int? Value1
bool IsValue1RealValue
string Value2
bool IsValue2RealValue
bool? Value3
bool IsValue3RealValue
Я хочу поставить тех, кто в ValueType, который будет содержать 2 или 3 значения:
-The значение (хранится в object
или в T
)
-The булевой '' RealValue
-(необязательно) имя имени свойства .NET
В настоящее время у меня есть следующий: отображение NHibernate
Component(x => x.Value1, fdf =>
{
fdf.Map(f => f.Value).Column("Value1");
fdf.Map(f => f.IsRealValue).Column("IsValue1RealValue");
});
Value1
имеет следующий вид:
public class FlaggedNullableIntValue
{
public int? Value;
public bool IsRealValue;
}
Мой объект домен будет выглядеть:
public class DomainEntity
{
public virtual FlaggedNullableIntValue Value1;
public virtual FlaggedStringValue Value2;
public virtual FlaggedNullableBooleanValue Value3;
}
Интересно, стоит ли идти дальше по этой дороге или есть еще одна конструкция, которая может лучше соответствовать моим потребностям?
Я не думаю, что понимаю. Как вы хотите, чтобы ваша модель выглядела? Где есть те 'T' или' objects', если тип 'Value' является' int? '? Какое имя свойства вы хотите отобразить? – NOtherDev
Я обновил свой вопрос. Модель будет иметь 1 свойство для каждой комбинации Value + IsRealValue в базе данных. Значение в настоящее время остается int, но в идеале сопоставленный объект сможет обрабатывать ints, bools и строки как Type for Value. – Laoujin
Вы спрашиваете, имеет ли nHibernate функцию, которая преобразует столбцы в строки (объекты)? Если это так, я уверен, что это невозможно. Вам необходимо сопоставить каждую пару вручную. – igelineau