一旦我在 NHibernate 中映射了我的域,我如何才能在我的代码中的其他地方反向查找这些映射?
例子:
出于某种原因,实体 Pony
被映射到名为“AAZF1203”的表。 (愚蠢的遗留数据库表名!)我想仅使用 typeof(Pony)
从 NH 映射中找出该表名,因为我必须在别处编写查询。
如何让下面的测试通过?
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();
您也可以从 session 中获取它...
((ILockable)session.GetSessionImplementation()
.GetEntityPersister(null, new Pony())).RootTableName
关于c# - 如何从实体类型查找 NHibernate 实体的表映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2429538/