0

我有一个数据库(无法更改),其中包含存储在两列中的全部值:

目前,每一列都映射到一个属性,我的 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;
}

我想知道沿着这条路走得更远是否是个好主意,或者是否有其他结构可能更适合我的需求?

4

1 回答 1

1

我认为你在完全正确的轨道上。一个建议 - 你应该能够使你的FlaggedNullable*Value类通用,这样你就不必创建很多不同的类。

public class FlaggedNullableValue<T>
    where T : struct
{
    public T? Value;
    public bool IsRealValue;
}

看起来您正在使用 Fluent NHibernate 来指定您的映射。只要您在命名这些列对的方式上保持一致,您就应该能够创建一个约定来减轻映射所有这些属性和列名的负担。

于 2013-09-30T20:42:49.953 回答