C# 从Int32到DateTime的InvalidCast异常-但在哪里?
我正在通过NHibernate使用以下原始SQL代码,我找不到更多的示例代码可与之比较,但它使用了InvalidCastException Int32 to DateTimeC# 从Int32到DateTime的InvalidCast异常-但在哪里?,c#,nhibernate,C#,Nhibernate,我正在通过NHibernate使用以下原始SQL代码,我找不到更多的示例代码可与之比较,但它使用了InvalidCastException Int32 to DateTime var query = session.CreateSQLQuery("SELECT COUNT(*), MIN(Created), MAX(Created)" + " FROM MyStuff WHERE Created < :deadline
var query = session.CreateSQLQuery("SELECT COUNT(*), MIN(Created), MAX(Created)" +
" FROM MyStuff WHERE Created < :deadline")
.SetDateTime("deadline", deadline)
.UniqueResult();
现在,我非常确定DateDate实际上是DateTime类型,该方法甚至不会采用任何其他类型,而且据我所知,我不会对结果强制使用类型,所以这种转换从何而来?每当我们希望NHibernate从DB加载数据时,我们必须考虑事后结果处理。通常,使用别名来正确地帮助找出记录集DB中的哪个值属于结果集C中的哪个值 因此,将此简单调整作为Alias是一种方法:
var query = session
.CreateSQLQuery("SELECT COUNT(*) AS Count, " +
" MIN(Created) AS MinDate, " +
" MAX(Created) AS MaxDate " +
" FROM MyStuff WHERE Created < :deadline")
.SetDateTime("deadline", deadline)
;
var result = query
.UniqueResult<object[]>()
;
var count = (int) result[0];
var minDate = (DateTime)result[1];
var maxDate = (DateTime)result[2];
结果声明:
var result = query
.SetResultTransformer(Transformers.AliasToBean<ResultDto>())
.UniqueResult<ResultDto>()
在sql端执行什么查询?试着用分析器检查一下。
var result = query
.SetResultTransformer(Transformers.AliasToBean<ResultDto>())
.UniqueResult<ResultDto>()