Как искать таблицу объекта NHibernate, отображающуюся от типа объекта?

После того как я отобразил свой домен в NHibernate, как я могу инвертировать поиск те отображения где-то в другом месте в моем коде?

Пример:

Объект Pony отображается на таблице под названием "AAZF1203" по некоторым причинам. (Глупые имена таблиц унаследованной базы данных!) Я хочу узнать что имя таблицы от отображений NH с помощью только typeof(Pony) потому что я должен записать запрос в другом месте.

Как я могу сделать следующую тестовую передачу?

private const string LegacyPonyTableName = "AAZF1203";

[Test]
public void MakeSureThatThePonyEntityIsMappedToCorrectTable()
{
    string ponyTable = GetNHibernateTableMappingFor(typeof(Pony));
    Assert.AreEqual(LegacyPonyTableName, ponyTable);
}

Другими словами, что делает GetNHibernateTableMappingFor(Type t) потребность быть похожими?

7
задан BoltClock 22 July 2011 в 19:03
поделиться

1 ответ

В какой момент вам нужна эта информация?

Потому что это зависит от того, что у вас есть ...

Не так давно мне нужно было получить имя таблицы из прослушивателя событий аудита, и я использовал это:

IPostDatabaseOperationEventArgs args //parameter
var tableName = ((ILockable)args.Persister).RootTableName.ToLower();

Вы также можете получить его из сеанса ...

((ILockable)session.GetSessionImplementation()
                   .GetEntityPersister(null, new Pony())).RootTableName
13
ответ дан 6 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

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