2010-05-24 10 views
2

Je suis en train de rééquiper une très grande application pour utiliser NHibernate comme stratégie d'accès aux données. Tout va bien avec AutoMapping. Heureusement, lorsque la couche de domaine a été construite, nous avons utilisé un générateur de code. Le problème principal que je rencontre actuellement est que chaque collection est cachée derrière une classe personnalisée qui dérive de la liste <>. Par exempleAutoMapping Collections personnalisées avec FluentNHibernate

public class League 
{ 
    public OwnerList owners {get;set;} 
} 
public class OwnerList : AppList<Owner> { } 
public class AppList<T> : List<T> { } 

Quel type de convention dois-je écrire pour que cela soit fait?

+0

« Heureusement, lorsque la couche de domaine a été construit, nous avons utilisé un générateur de code » - Je ne vois pas comment cela pourrait être une bonne chose. Exposer des types de liste concrets est une grosse erreur de conception. –

+0

C'est une bonne chose qu'il y ait une uniformité entre le domaine et la base de données, donc un mappage de domaine direct est facile. – ScottBelchak

Répondre

2

Je ne pense pas que vous serez en mesure d'atteindre cet objectif avec une convention. Vous devrez créer un remplacement de mappage automatique puis procédez comme suit:

mapping.HasMany(l => a.owners).CollectionType<OwnerList>(); 
+0

Ce n'est pas une bonne solution, mais c'est la seule qui fonctionne. – ScottBelchak