2009-08-19 3 views

Antwort

0

Sie könnten die Zuordnungsdatei analysieren, wenn Sie eine verwenden. Es ist ziemlich einfach XML, so dass eine einfache Xpath-Abfrage Sie den Spaltennamen erhalten würde. Wenn Sie Attribute verwenden, müssen Sie die Reflektion verwenden, um das Attribut von der Eigenschaft abzurufen.

+0

Ich habe darüber nachgedacht. Ich hatte nur gehofft, dass es in der 'IEntityPersister'-Schnittstelle eine Eigenschaft namens "over-sah/miss" gab, die es mir ermöglichte, den Spaltennamen zu finden, ohne das Parsing durchführen zu müssen. – MisterHux

0

Hier ist ein Code, der helfen könnte.

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; 
     } 
    } 
Verwandte Themen