私は2つの同様のテーブル(Table1
、Table2
)を持っていますので、共通のプロパティを持つ基本抽象クラスを作成しました。各テーブルには、レコード処理のステータスを示す列があります。この列を1つの列挙型にマップしたいと思います。異なる値への列挙のマッピング
enum RecordStatus
{
UnkownStatus,
NotProcessed,
Processed,
}
残念ながら、各テーブルでは、列挙型に異なる値をマッピングする必要があります。
EnumType<RecordStatus>
を継承し、マッピングをセットアップした2つのコンバータ(Table1StatusConverter
、Table2StatusConverter
)を作成しました。それは部分的に機能します。 NHibernateは両方のクラスで1つのコンバータしか使用していないため、部分的です。
このバグはありますか、それとも設計上の説明のように機能するのでしょうか?このための回避策はありますか?
class abstract TableBase { public Guid Id { get; protected set; } public string Sender { get; protected set; } public DateTime ReceiveTime { get; protected set; } public RecordStatus Status { get; set; } } class Table1 : TableBase { public string Message { get; set; } } class Table2 : TableBase { public ICollection Parts { get; protected set; } }
コンバータ:
編集: Table1StatusConverterとTable2StatusConverterが同じメソッドをオーバーライドし、瞬間は、私が
エンティティそれへのアクセスを持っていないので、私はメモリからコードを書きますしかし異なった方法で。
class Table1StatusConverter : EnumType<RecordStatus> { public override object GetValue(object enumValue) { ... } public override object GetInstance(object value) { ... } }
マッピング:
Table1.hbm.xml <class name="Table1" table="Table1"> .. <property name="Status" type="MyAssembly.Table1StatusConverter, MyAssembly" /> .. </class> Table2.hbm.xml <class name="Table2" table="Table2"> .. <property name="Status" type="MyAssembly.Table2StatusConverter, MyAssembly" /> .. </class>
は、我々はいくつかのマッピングファイルおよびコードを参照してくださいすることができますか? – Rippo