我有一个查询,由于性能原因,我需要使用原始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
以便按照我需要的方式工作?
答案 0 :(得分:1)
您可以创建自定义UserType来处理表值参数。
NHibernate不公开DataReader - &gt;任何公共方法中的实体转换。