Получение имен полей класса и столбца таблицы называет от метаданных NHibernate

Visual Studio 2008, по крайней мере, для меня, отображает содержание контейнеров STL в стандартном поле контента наведения мыши.

7
задан Dylan 26 November 2009 в 00:34
поделиться

1 ответ

Теперь, если я правильно понимаю, вот что вы могли бы сделать ....

Один из способов - прочитать и проанализировать файлы сопоставления XML из dll, которые были встроены до или даже после фабрика сеансов NHibernate построена. Таким образом вы можете получить всю необходимую информацию из файлов XML (столбец соответствует какому свойству) и заполнить глобальную (возможно, статическую) коллекцию настраиваемых объектов, которые будут содержать имя объекта и словарь с ключом, именем свойства и значением. имя столбца (или наоборот).

Затем вы можете получить доступ к этой глобальной коллекции, чтобы получить необходимую информацию сразу после вызова SaveOrUpdate (), как вы ее описали. Обратной стороной этого подхода является то, что вам необходимо написать свою собственную логику синтаксического анализа XML для извлечения необходимой информации из файлов сопоставления XML.

Альтернативой может быть создание настраиваемого атрибута для украшения каждого свойства ваших сущностей, чтобы получить имя столбца, соответствующее каждому свойству. Примером может быть:

[ColumnName("MyColumn")]
public string Status { get; set; }

Используя отражение, вы можете легко получить имя свойства и из атрибута имя столбца, которому сопоставлено это свойство.

Обратной стороной этого подхода будет необходимость синхронизировать имена столбцов со значениями атрибутов при обновлении схемы базы данных.

1
ответ дан 6 December 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: