微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐