我有一个数据库(无法更改),其中包含存储在两列中的整个值:
目前,每列都映射到一个属性,我的Domain对象如下所示:
int? Value1
bool IsValue1RealValue
string Value2
bool IsValue2RealValue
bool? Value3
bool IsValue3RealValue
我想将它们放入一个可容纳2或3个值的ValueType中:
- 值(存储在object
或T
)中
- 布尔值'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;
}
我想知道在这条路上走得更远是不是一个好主意,还是有另一种可能更适合我需要的结构?
答案 0 :(得分:1)
我认为你正走在正确的轨道上。一个建议 - 您应该能够使FlaggedNullable*Value
类具有通用性,这样您就不必创建许多不同的类。
public class FlaggedNullableValue<T>
where T : struct
{
public T? Value;
public bool IsRealValue;
}
看起来你正在使用Fluent NHibernate来指定你的映射。只要您在命名这些列对的方式上保持一致,就应该能够创建一个约定来减轻映射所有这些属性和列名的负担。