После того как я отобразил свой домен в 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)
потребность быть похожими?
В какой момент вам нужна эта информация?
Потому что это зависит от того, что у вас есть ...
Не так давно мне нужно было получить имя таблицы из прослушивателя событий аудита, и я использовал это:
IPostDatabaseOperationEventArgs args //parameter
var tableName = ((ILockable)args.Persister).RootTableName.ToLower();
Вы также можете получить его из сеанса ...
((ILockable)session.GetSessionImplementation()
.GetEntityPersister(null, new Pony())).RootTableName