Pregunta

En este momento, estoy cambiando mi proyecto del clásico estilo de nhibernación fluida al definir manualmente un ClassMap para cada entidad de dominio, para que el auto mapeador genere automáticamente las asignaciones para mí. Pero me gustaría seguir usando las clases que ya he mapeado en el estilo clásico, hasta que pueda modificar las aplicaciones automáticas para que coincidan con las viejas asignaciones clásicas.

El único problema es que el nhibernate fluido se bloquea cuando el asignador automático llega a una clase que ya se ha asignado en el estilo clásico de nhibernate fluido.

Aquí está mi código de configuración AutoPersistenceModel :

_autoPersistenceModel = AutoMap.AssemblyOf<DomainEntity>();
_autoPersistenceModel.AddMappingsFromAssembly(typeof (PlayerPersistenceMap).Assembly);

_autoPersistenceModel.Alterations(x =>
                    x.Add<AutoMappingAlteration>())
                .Setup(s =>
                {
                    s.FindIdentity = type => type.Name == "ID";

                    s.IsBaseType = type => (type == typeof(DomainEntity));
                })
                .Conventions
                    .AddFromAssemblyOf<IdentityColumnConvention>()
                    .UseOverridesFromAssemblyOf<PlayerMappingOverride>();

¿Alguien puede ayudarme aquí?

Más información:

También probé la técnica mencionada en el wiki de nhibernate fluido aquí . Desafortunadamente, sigo recibiendo el error: Duplicar la asignación de clase / entidad .

¿Fue útil?

Solución

El ejemplo de mapeos mixtos fluidos y mapeos automáticos en el wiki debería funcionar, si lo hace. entonces hay un error.

Como una solución alternativa, excluya los tipos que se han asignado manualmente a partir de sus automappings. Lo haría utilizando el método Where , como se muestra en los ejemplos de wiki, algo como esto:

AutoMap.AssemblyOf<DomainEntity>()
  .Where(type => type != typeof(OneOfYourManuallyMappedClasses));

Si tiene muchas asignaciones fluidas, puede crear una colección para mantener limpia la configuración de automapping:

var mappedTypes = new[] { typeof(One), typeof(Two) };

AutoMap.AssemblyOf<DomainEntity>()
  .Where(type => !mappedTypes.Contains(type));

Nuevamente, esto no debería ser necesario, pero si está seguro de que no funciona con el ejemplo de wiki, le sugiero que plantee un problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top