Как получить список всех сопоставленных таблиц моих сущностей? - PullRequest
2 голосов
/ 10 марта 2011

Вкратце: как мне получить список всех имен таблиц, которые сопоставлены с моими сущностями?

Почему: У нас есть набор веб-служб WCF, поддерживаемых NHibernate, которые отображаются через FluentNHibernate. Мы встроили простые, но мощные возможности проверки работоспособности в нашу архитектуру. Мы можем вызвать защищенную операцию службы Diagnose (), и она запрашивает у нашего контейнера Windsor все зарегистрированные экземпляры нашего интерфейса IHealthCheck. У нас есть ряд конкретных реализаций этого интерфейса, которые проверяют состояние установки нашего продукта - то есть подключение к базе данных, начальные данные, подключение к служебной службе и т. Д. И т. Д.

Мы создали ряд вещей, которые проверяют работоспособность нашего кода NHibernate. Например, мы заимствовали эту [1] кодовую форму Ayende для запроса каждого отображения. Я хотел бы построить проверку вокруг нашей пользовательской реализации KeyGenerator, которую мы используем с NHibernate. У нас есть таблица, в которой хранится строка для каждой таблицы в нашей базе данных. Наш алгоритм HILO использует эту таблицу для генерации ключей. Итак, я хотел бы написать проверку, которая подтверждает, что каждый сопоставленный объект в нашей SessionFactory имеет строку в этой таблице, которая представляет вспомогательную таблицу объектов.

Любые указатели будут оценены. session.SessionFactory.GetAllClassMetadata () пахнет многообещающе, но я не вижу, чтобы найти именно то, что я ищу.

Приветствие.

[1] http://ayende.com/Blog/archive/2006/08/09/NHibernateMappingCreatingSanityChecks.aspx

1 Ответ

5 голосов
/ 10 марта 2011

Я сделал то же самое, сохранив ссылку на NHibernate.Cfg.Configuration, которую я использую для создания SessionFactory.

Он имеет коллекцию ClassMappings, которая содержит объект PersistentClass для каждой сущности.Свойство PersistentClass.Table.Name должно быть тем, что вы ищете.

...