我在我的项目中使用NHibernate,并使用事件监听器实现了审计功能。
我现在需要恢复这些数据,我想完全按照它在数据库中的方式返回它我不需要具有关系的丰富对象模型我想要的是任何关系的ID。
我基本上只是想显示一个审核日志(基本上是你在sql中打开表时会看到的副本)。
我需要能够为许多表执行此操作,并且我拥有的只是审计表名称,是否有一种通用方法可以让NHibernate查询表并将结果作为数据表返回或类似于那个没有定义的模型?
基本上我希望NHibernate这样做:
SELECT * FROM“tablename”
然后以一些通用的方式返回它,我可以放入网格并让它自动生成它的列。
答案 0 :(得分:0)
您可以使用'select'方法只获取您想要的字段:
session.CreateCriteria(typeof(Cat)).Select(c=> new {Id = c.Id, MateId = c.Mate.Id});
答案 1 :(得分:0)
您可以使用以下内容查询未映射的对象。
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/