¿Es posible utilizar una convención Fluido NHibernate para mapear todos los ICollections como conjuntos?

StackOverflow https://stackoverflow.com/questions/1990593

Pregunta

¿Es posible utilizar una convención Fluido NHibernate para mapear todos los ICollections como conjuntos? Tengo una entidad de esta manera:

public class NoahsArk
{
    public virtual ICollection<Animal> Animals { get; set; }

    public NoahsArk()
    {
        Animals = new HashSet<Animal>();
    }
}

Con las asignaciones de fluidez, esta propiedad se asigna como HasMany(x => x.Animals).AsSet(), pero ¿cómo iba a hacer esto con una convención que quiero usar con el AutoMapper?

Debería añadir que, por defecto, ICollections get persistido como ILists, y obtener una excepción de difusión cuando se trata de emitir el HashSet a IList.

¿Fue útil?

Solución

Esto no es posible en una convención, en la actualidad. Si desea que el AutoMapper para tratar sus colecciones como conjuntos por defecto, en lugar de uso ISet ICollection.

Otros consejos

En respuesta a Christina pregunta , usted tiene que crear una nueva clase que implementa IAutoMappingOverride<T>:

public class AlbumOverride : IAutoMappingOverride<Album>
{
    public void Override(AutoMapping<Album> mapping)
    {
        mapping.HasMany(x => x.Pictures).AsSet().Inverse();
    }
}

A continuación, decirle a la HNF para usarlo en la configuración:

Fluently.Configure()
    .Database(...)
    .Mappings(m => m.AutoMappings.Add(AutoMap.Assemblies(...)
        .UseOverridesFromAssemblyOf<Album>()))
    .BuildConfiguration();

Usted necesitará una nueva clase de anulación para cada entidad que necesita un reemplazo para, pero es sobre todo un asunto de copiar y pegar.

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