Поиск столбца базы данных, в который отображается свойство объекта - PullRequest
0 голосов
/ 20 августа 2009

Мне было интересно, знает ли кто-нибудь, как определить, к какому столбцу привязано свойство объекта с помощью NHibernate и только с доступным интерфейсом IEntityPersister.

Ответы [ 2 ]

0 голосов
/ 25 июня 2010

Вот код, который может помочь.

    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;
        }
    }
0 голосов
/ 20 августа 2009

Вы можете проанализировать файл сопоставления, если используете его. Это довольно простой xml, поэтому простой запрос xpath даст вам имя столбца. Если вы используете атрибуты, вам придется использовать отражение, чтобы получить атрибут из свойства.

...