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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |