2009-02-13 15 views
7

Im utilizando la AutoPersistenceModel en Fluido Nhibernate para mapear todos mis entidades y que todo funciona bien: DFluido NHibernate muchos a muchos convención para el tipo

Sin embargo, varios de mis objetos tienen

public virtual IList<Comment> Comments { get; set; } 

En el la base de datos existe una única tabla de comentarios, y cada entidad con el código anterior tiene su propia tabla de enlaces a los comentarios.

Por el momento lo que estoy haciendo es:

public class ContractMappingOverride : IAutoMappingOverride<Contract> 
{ 
    public void Override(AutoMap<Contract> mapping) 
    { 
     mapping.HasManyToMany(x => x.Comments) 
      .WithTableName("Comment_Contract"); 

para cada entidad.

¿Hay alguna manera de establecer una convención en la que todas las asignaciones a IList <comente> estén conectadas automáticamente tantas veces como la convención de nombre de tabla anterior?

Gracias

Andrew

Respuesta

5

Yo sé que no es lo que quiere oír, pero la respuesta es no.

En el diseño actual de Fluent NHibernate, no hay una forma de aplicar convenciones a las colecciones mientras se conocen los tipos en los que se usan, puede aplicar algo a todas las colecciones simplemente no según su tipo contenido . Este es un defecto en nuestro diseño y mi objetivo es corregir esto, pero es un cambio bastante grande, por lo que no sucederá de la noche a la mañana.

Recomiendo que te registres con nuestro mailing list, generalmente publicamos actualizaciones allí.

Lo siento, no puedo ser más útil.

+1

Bastante, gracias por la información. Comprobaré la fuente y veré si puedo armar un parche porque realmente me gustaría esta funcionalidad. –

+0

Agregué una respuesta a esta pregunta James, Sería genial si pudieras agregar un comentario si mis suposiciones son correctas o si estoy fuera de la base. –

+1

Creo que lo que sería muy útil sería tener una versión no genérica de Override <>. De esta forma, sería relativamente fácil hacer algunas anulaciones basadas en la convención mediante el uso de la reflexión para pasar las propiedades. –

0

Ha pasado un tiempo desde que trabajé con el Fluiber NHibernate y ahora estoy volviendo a la normalidad (¡wow ha habido muchos cambios desde principios de 09!) Y creo que la respuesta a su pregunta ahora es sí, puedes hacer esto con la funcionalidad OverideAll.

Eche un vistazo a Overrides en la wiki de FNH.

+0

Desafortunadamente, creo que OverrideAll solo puede (actualmente) usarse para ignorar propiedades en cualquier entidad, no para lo que Andrew está buscando. –

Cuestiones relacionadas