2009-02-13 5 views
7

Im en utilisant le AutoPersistenceModel en Fluent NHibernate à la carte toutes mes entités et que tout fonctionne bien: DCourant NHibernate plusieurs à plusieurs conventions pour le type

Cependant, plusieurs de mes objets ont

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

Dans le base de données il y a une seule table de commentaires, et chaque entité avec le code ci-dessus, a sa propre table de liens aux commentaires.

Au moment im ce faire est la suivante:

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

pour chaque entité.

Y at-il un moyen que je peux définir une convention où par tous les mappings à IList <Commentaire> sont câblés automatiquement autant de fois avec la convention de nom de table ci-dessus?

Merci

Andrew

Répondre

5

Je sais que ce n'est pas ce que vous voulez entendre, mais la réponse est non. Dans la conception actuelle de Fluent NHibernate, il n'y a pas moyen d'appliquer des conventions aux collections tout en connaissant les types dans lesquels elles sont utilisées. Vous pouvez appliquer quelque chose à toutes les collections, mais pas en fonction de leur type. . C'est une faille dans notre conception et je vise à corriger cela, mais c'est un changement assez important pour qu'il ne se produise pas du jour au lendemain.

Je vous recommande de vous enregistrer avec notre mailing list, nous affichons habituellement des mises à jour là.

Désolé, je ne peux pas être plus utile.

+1

Assez juste, merci pour l'info. Je vais vérifier la source et voir si je peux mettre un patch ensemble car je voudrais vraiment cette fonctionnalité. –

+0

J'ai ajouté une réponse à cette question James, Ce serait bien si vous pouviez ajouter un commentaire si mes hypothèses étaient correctes ou si je suis hors de la base. –

+1

Je pense que ce qui serait très utile serait d'avoir une version non générique de Override <>. De cette façon, il serait relativement facile de faire des substitutions basées sur les conventions en utilisant la réflexion pour faire défiler les propriétés. –

0

Cela fait longtemps que je n'ai pas travaillé avec Fluent NHibernate et que je suis en train de me remettre au goût du jour (wow il y a eu beaucoup de changements depuis début 09!) Et je pense que la réponse est maintenant oui vous pouvez le faire avec la fonctionnalité OverideAll. Regardez le Overrides sur le wiki FNH.

+0

Malheureusement, je pense que OverrideAll ne peut (actuellement) être utilisé pour ignorer les propriétés sur aucune entité, pas pour ce que Andrew recherche. –

Questions connexes