J'ai deux tables similaires (Table1
, Table2
) donc j'ai créé une classe abstraite de base qui a des propriétés communes. Chaque table a une colonne indiquant l'état du traitement des enregistrements. Je voudrais mapper ces colonnes à une enum:Mappage enum à différentes valeurs
enum RecordStatus
{
UnkownStatus,
NotProcessed,
Processed,
}
Malheureusement pour chaque table, j'ai besoin de mapper des valeurs différentes pour enums.
J'ai donc créé deux convertisseurs (Table1StatusConverter
, Table2StatusConverter
) qui héritent de EnumType<RecordStatus>
et les installent dans des mappages. Cela fonctionne partiellement. Partiellement parce que NHibernate n'utilise qu'un seul convertisseur dans les deux classes.
Est-ce un bug ou peut-être qu'il fonctionne comme décrit par le design? Y at-il une solution de contournement pour cela?
Edit: j'écrire du code de la mémoire parce que le moment je n'ai pas accès
Entités:
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; } }
Convertisseurs: Table1StatusConverter et Table2StatusConverter passer outre la même méthode, mais de différentes manières.
class Table1StatusConverter : EnumType<RecordStatus> { public override object GetValue(object enumValue) { ... } public override object GetInstance(object value) { ... } }
Mappages:
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>
peut-on voir des fichiers de mappage et le code s'il vous plaît? – Rippo