2010-10-08 8 views
1

En ce moment nous gardons toutes les Entités et Mappages dans le même assemblage. Nos entités dérivées d'une classe de base Entity qui est un EntityWithTypedIdDifférentes conventions NHibernate différentes pour différents types de base

Nous avons également un nom de table Convention disant de pluraliser les noms de table.

Maintenant, je veux créer deux autres types de base e.q. AggregateRootEntity et AggregateEntity, tous deux dérivent de Entity. Et je voudrais créer deux séries de conventions pour les deux entités de base:

Disons que: Ppour toutes les entités dérivées des tables AggregateRootEntity doivent être préfixées avec « ag_ » et Id est incrémental généré, mais pour toutes les entités dérivées à partir des tables AggregateEntity doit être préfixé avec "a_" et les ID doivent être affectés.

Est-il possible de définir des conventions en fonction de certaines conditions?

Répondre

1

Vous pouvez le faire avec plusieurs conventions, chaque vérification pour un type spécifique dans leurs Accept méthodes

quelque chose comme:

public class LegacyEntityTableConvention : IClassConvention, IClassConventionAcceptance 
{ 
    public void Accept(IAcceptanceCriteria<IClassInspector> criteria) 
    { 
    criteria.Expect(x => x.EntityType.IsAny(typeof(OldClass), typeof(AnotherOldClass))); 
    } 

    public void Apply(IClassInstance instance) 
    { 
    instance.Table("tbl_" + instance.EntityType.Name); 
    } 
} 

Juste un bloc de code sur le Wiki FNH http://wiki.fluentnhibernate.org/Acceptance_criteria

Questions connexes