2011-01-31 2 views
0

Je voudrais analyser un fichier de mappage NHibernate Fluent pour pouvoir obtenir le nom de la table et les noms de colonnes qui y sont spécifiés.Mappages de réflexion NHibernate courants

Le chargement de l'assembly et son affichage en tant que ClassMap ne constituent pas un problème, mais cette classe ne dispose que de méthodes pour définir les noms de table et de colonne, ce qui ne permet plus de les récupérer.

Des idées?

Répondre

0

En utilisant Reflector, il semble que le tableau méthode a cette signature:

public void Table(string tableName) 
{ 
    this.attributes.Set<string>(x => x.TableName, tableName); 
} 

Les colonnes seront beaucoup plus difficile car il conserve des propriétés, des références et des collections distinctes. Par exemple.

protected virtual PropertyPart Map(PropertyInfo property, string columnName) 
{ 
    PropertyPart propertyMap = new PropertyPart(property, typeof(T)); 
    if (!string.IsNullOrEmpty(columnName)) 
    { 
     propertyMap.Column(columnName); 
    } 
    this.properties.Add(propertyMap); 
    return propertyMap; 
} 

En théorie, si vous pouvez obtenir les champs privés des attributs, des propriétés et des références par réflexion et obtenir les informations de cette façon.

+0

Il s'avère que je n'avais pas besoin de ça autant que je le pensais. Apparemment, la méthode CreateQuery dans nHibernate analyse la chaîne avec le nom de l'objet et mappe les noms des champs de classe aux noms de colonnes - en cours d'apprentissage nhibernate: \ J'ai fini par écrire ma propre méthode Update qui prend une liste d'expressions lambda de champs mise à jour et les nouvelles valeurs et une liste d'expressions lambda pour la clause conditionnelle plutôt que d'utiliser nHibernate pour charger chaque entité pour chaque mise à jour. – johnnyboy

Questions connexes