【问题标题】:nhibernate audit query休眠审计查询
【发布时间】:2011-08-24 13:46:55
【问题描述】:

我在我的项目中使用 NHibernate,并使用事件侦听器实现了审计功能。

我现在需要取回这些数据,我想完全按照数据库中的原样返回它我不需要具有关系的丰富对象模型,我想要的只是任何关系的 ID。

我基本上只是想显示一个审计日志(它本质上是你在 sql 中打开表时所看到的副本)。

我需要能够为许多表执行此操作,而我所拥有的只是审计表名称,是否有一种通用方法可以让 NHibernate 查询表并将结果作为数据表或类似的简单内容返回没有定义的模型?

所以本质上我希望 NHibernate 这样做:

从“表名”中选择 *

然后以某种通用方式返回它,我可以将其放入网格中并让它自动生成列。

【问题讨论】:

    标签: nhibernate logging audit


    【解决方案1】:

    您可以使用以下方法查询未映射的对象。

    string tablename = "nonmapped";
    IList<Unmapped> result = session
                                    .CreateSqlQuery("select Id, Description from " + tablename)
                                    .SetResultTransformer(Transformer.AliasToBean(typeof(Unmapped)))
                                    .List<Unmapped>();
    

    更多:http://lostechies.com/jimmybogard/2010/06/30/ad-hoc-mapping-with-nhibernate/

    【讨论】:

    • 听起来很有趣会试一试
    【解决方案2】:

    您可以使用“选择”方法只获取您想要的字段:

    session.CreateCriteria(typeof(Cat)).Select(c=> new {Id = c.Id, MateId = c.Mate.Id});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多