c# – 如何从实体类型中查找NHibernate实体的表映射?

前端之家收集整理的这篇文章主要介绍了c# – 如何从实体类型中查找NHibernate实体的表映射?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一旦我在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();

你也可以从会议中得到它……

((ILockable)session.GetSessionImplementation()
                   .GetEntityPersister(null,new Pony())).RootTableName

猜你在找的C#相关文章