0

2 つの列に格納されている値の負荷全体を持つデータベース (変更できない) があります。

現在、各列は 1 つのプロパティにマップされており、私のドメイン オブジェクトは次のようになります。

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*Value1 つの提案 -多くの異なるクラスを作成する必要がないように、クラスをジェネリックにすることができるはずです。

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

Fluent NHibernate を使用してマッピングを指定しているようです。これらの列ペアの命名方法に一貫性がある限り、これらすべてのプロパティと列名をマッピングする負担を軽減する規則を作成できるはずです。

于 2013-09-30T20:42:49.953 に答える