加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:05:06 所属栏目:百科 来源:网络整理
导读:一旦我在NHibernate中映射了我的域,我怎样才能在我的代码中的其他地方反向查找这些映射? 例: 由于某种原因,实体Pony被映射到名为“AAZF1203”的表. (愚蠢的遗留数据库表名!)我想仅使用typeof(Pony)从NH映射中找出该表名,因为我必须在别处编写查询. 我怎样
一旦我在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读