Utilicé este How do you map an enum as an int value with fluent NHibernate? como mapa, pero recientemente me actualicé a NHibernate 3 y parece que ya no funciona. He puesto puntos de interrupción en mi clase EnumConvention y no están siendo golpeados. La consulta que está golpeando la base de datos tiene la enumeración como una cadena que es la configuración predeterminada.Mapa Enum como Int con Fluidez NHibernate y NHibernate 3
¿Cómo funciona esto con NHibernate 3?
actualización
Aquí es parte del archivo de asignación que se genera:
<property name="ComponentType" type="FluentNHibernate.Mapping.GenericEnumMapper`1[[...ComponentType, ..., Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], FluentNHibernate, Version=1.1.0.0, Culture=neutral, PublicKeyToken=8aa435e3cb308880">
<column name="ComponentTypeId" />
</property>
No parece correcto que se estaría utilizando un GenericEnumMapper
cuando se especifica una IUserTypeConvention
para enumeraciones.
Aquí es mi convención:
public class EnumConvention : IUserTypeConvention
{
public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
{
criteria.Expect(e => e.Property.PropertyType.IsEnum);
}
public void Apply(IPropertyInstance instance)
{
instance.CustomType(instance.Property.PropertyType);
}
}
Realmente no veo lo que puede ganar con este ejercicio, pero esto podría haber sido eliminado por una razón, ya que no es necesario mantenerlo alrededor de – Baz1nga
No veo en ningún lado que se haya ido, simplemente parece que ya no funciona ¿De qué otro modo se puede hacer esto entonces? Hacer 'Map (...) .CustomType()' no funciona. Causa problemas. Trataré de hacer un IUserType personalizado y ver si eso funciona por ahora. –
Estoy diciendo que tiene alguna razón para almacenarlo como un int en lugar de enum? Con mem nt a prob realmente no veo una razón ... cadenas enumeradas son código seguro .. – Baz1nga