NHibernate相当于LINQ to SQL和EF的Translate <t>()</t>

时间:2013-04-07 09:36:59

标签: .net nhibernate sqldatareader datareader

我有一个查询,由于性能原因,我需要使用原始ADO.NET(它涉及表值参数)来制作实际命令。使用LINQ to SQL或EF,我可以简单地将DbDataReader返回的DbCommand.ExecuteReader()传递给DataContext.Translate<T>(DbDataReader)ObjectContext.Translate<T>(DbDataReader)方法,并将结果集转换为对象,返回IEnumerable<T>

在NHibernate中是否有任何等效的API,我可以传递DbDataReader / IDataReader甚至是DbCommand / IDbCommand并获取NHibernate实体?

或许有一种方法可以拦截由ISession.CreateQuery(string)创建的命令的构造,以便我可以修改基础DbCommand以便按照我需要的方式工作?

1 个答案:

答案 0 :(得分:1)

您可以创建自定义UserType来处理表值参数。

NHibernate不公开DataReader - &gt;任何公共方法中的实体转换。