2009-08-19 6 views

Répondre

0

Vous pouvez analyser le fichier de mappage si vous en utilisez un. C'est assez simple xml donc une simple requête xpath vous obtiendrait le nom de la colonne. Si vous utilisez des attributs, vous devrez utiliser la réflexion pour obtenir l'attribut de la propriété.

+0

J'ai pensé à faire cela. J'espérais juste qu'il y avait une propriété nommée over/miss dans l'interface 'IEntityPersister' qui me permettait de trouver le nom de la colonne sans avoir à faire l'analyse. – MisterHux

0

Voici un code qui pourrait vous aider.

public static string[] GetDatabaseColumnNamesFromEntityProperty(Type entityType, string propertyName) 
    { 
     PersistentClass aNHibernateClass = NHibernateSessionManager.Instance.GetNHibernateConfiguration().GetClassMapping(entityType); 

     if (aNHibernateClass == null) 
     { 
      return null; 
     } 
     else 
     { 
      string[] columnNames = null; 

      try 
      { 
       Property aProperty = aNHibernateClass.GetProperty(propertyName); 
       columnNames = new string[aProperty.ColumnCollection.Count]; 

       int count = 0; 

       foreach (Column column in aProperty.ColumnCollection) 
       { 
        columnNames[count] = column.Name; 
        count++; 
       } 
      } 
      catch(Exception) 
      { 
       Property aProperty = aNHibernateClass.IdentifierProperty; 

       //if(aProperty.Name.Equals(propertyName)) 
       //{ 
        columnNames = new string[aProperty.ColumnCollection.Count]; 
        int count = 0; 

        foreach (Column column in aProperty.ColumnCollection) 
        { 
         columnNames[count] = column.Name; 
         count++; 
        } 
       //} 
      } 

      return columnNames; 
     } 
    } 
Questions connexes