Ik zit met een raar probleem met NHibernate. Als ik vergelijkingen ga uitvoeren op een TimeSpan dan krijg ik het volgende probleem:
De query is 100% goed, getest in SQL Server. Het probleem blijkt te liggen in de manier hoe .NET omgaat met Time parameters...
http://connect.microsoft....instead-of-sqldbtype-time
Natuurlijk ben ik niet de enige met dit probleem:
http://osdir.com/ml/nhibe...ent/2010-06/msg00095.html
Dit is een "mooie" workaround maar ik zit er ook niet op te wachten om bij elke nieuwe versie van NHibernate deze fix in hun code te plakken, de boel te compileren om daarna te koppelen aan mijn eigen project.
Kent iemand dit probleem en zo ja, is er een mooiere manier om dit te op te lossen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| ------------------------------------------------------------------------------------- could not execute query <SNIP> Positional parameters: #0>19:00:00 <SNIP> ------------------------------------------------------------------------------------- at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes) at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) at NHibernate.Impl.CriteriaImpl.List(IList results) at NHibernate.Impl.CriteriaImpl.List[T]() <SNIP> ------------------------------------------------------------------------------------- The data types time and datetime are incompatible in the greater than or equal to operator. ------------------------------------------------------------------------------------- at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean autoDiscoverTypes, Boolean callable, RowSelection selection, ISessionImplementor session) at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) |
De query is 100% goed, getest in SQL Server. Het probleem blijkt te liggen in de manier hoe .NET omgaat met Time parameters...
http://connect.microsoft....instead-of-sqldbtype-time
Ik kan dus wachten tot ik een ons weegquote: MicrosoftThanks for reporting this issue. This is a bug in our product, but after carefully investigating the issue, we have decided not to fix the bug. Fixing this bug will cause a breaking change and in most of customer scenarios, they should be able to use SqlParameter.SqlDbType. Please let us know if this is a blocking issue for some of your major scenarios.

Natuurlijk ben ik niet de enige met dit probleem:
http://osdir.com/ml/nhibe...ent/2010-06/msg00095.html
Dit is een "mooie" workaround maar ik zit er ook niet op te wachten om bij elke nieuwe versie van NHibernate deze fix in hun code te plakken, de boel te compileren om daarna te koppelen aan mijn eigen project.
Kent iemand dit probleem en zo ja, is er een mooiere manier om dit te op te lossen?
PSN: Norfirin