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

标签 c# nhibernate nhibernate-mapping

一旦我在 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/

相关文章:

找不到 C# SqlConnection

c# - 使用 DefaultCascade.All() 将实体添加到列表时,Nhibernate 不会设置 Id

sql-server - 分布式二级缓存与专注于调优数据库相比有何优缺点

c# - 使用 Fluent NHibernate 映射树结构

具有多个相同类型的多对多列表的休眠实体?

c# - NHibernate 将多个表映射到一个类

c# - 如何将 .NET 4 WinForm 应用程序分配给 Delphi 7 窗体的所有者属性?

c# - 如何通过从另一个表单调用它来将数据库中的数据显示到另一个表单

C# - 如何将委托(delegate)传递给另一个方法?

nhibernate - 为什么 NHibernate 拒绝批量插入?