Hola gente!,
Estoy intentando usar el NH.Linq que esta en el trunk, pero resulta que
hasta el query mas simple parece fallar... Por eso queria saber si estaba
soportado por ahora...
Ejemplo:
var mario = (from st in repo.Query<Student>()
where st.FirstName == "Mario"
select new { st.FirstName, st.LastName }).FirstOrDefault();
resulta que eso genera este query:
select first 1 student0_.FirstName as col_0_0_, student0_.LastName as
col_1_0_
from Student student0_
where (student0_.FirstName is null) and (@p0 is null) or
student0_.firstna...@p0
.... pero (@p0 is null) no esta soportado por FB (
http://www.mail-archive.com/[email protected]/msg03173.html
)
Alguien lo probo (imagino que Fabio si..)?
Excepcion:
System.NotSupportedException: Unknown data type
at FirebirdSql.Data.Common.DbValue.GetBytes()
at
FirebirdSql.Data.Client.Common.XsqldaMarshaler.MarshalManagedToNative(Charset
charset, Descriptor descriptor)
at FirebirdSql.Data.Client.Native.FesStatement.Execute()
at FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteCommand(CommandBehavior
behavior, Boolean returnsSet)
at FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteReader(CommandBehavior
behavior)
at
FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteDbDataReader(CommandBehavior
behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\AdoNet\AbstractBatcher.cs:
line 242
at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean
autoDiscoverTypes, Boolean callable, RowSelection selection,
ISessionImplementor session) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Loader\Loader.cs: line 1325
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
QueryParameters queryParameters, Boolean returnProxies) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Loader\Loader.cs: line 399
at
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor
session, QueryParameters queryParameters, Boolean returnProxies) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Loader\Loader.cs: line 236
at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
QueryParameters queryParameters) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Loader\Loader.cs: line 1653
NHibernate.ADOException: could not execute query
[ select first 1 student0_.FirstName as col_0_0_, student0_.LastName as
col_1_0_ from Student student0_ where (student0_.FirstName is null) and (@p0
is null) or student0_.firstna...@p0 ]
Name:p1 - Value:Mario
[SQL: select first 1 student0_.FirstName as col_0_0_, student0_.LastName as
col_1_0_ from Student student0_ where (student0_.FirstName is null) and (@p0
is null) or student0_.firstna...@p0]
at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
QueryParameters queryParameters) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Loader\Loader.cs: line 1662
at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor
session, QueryParameters queryParameters) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Loader\Loader.cs: line 1577
at NHibernate.Loader.Loader.List(ISessionImplementor session,
QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Loader\Loader.cs: line 1567
at NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor
session, QueryParameters queryParameters) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Hql\Ast\ANTLR\Loader\QueryLoader.cs:
line 297
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor
session, QueryParameters queryParameters) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:
line 107
at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters
queryParameters, ISessionImplementor session, IList results) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Engine\Query\HQLQueryPlan.cs:
line 78
at NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression,
QueryParameters queryParameters, IList results) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Impl\SessionImpl.cs: line
676
at NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression,
QueryParameters parameters) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Impl\SessionImpl.cs: line
655
at NHibernate.Impl.ExpressionQueryImpl.List() in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Impl\ExpressionQueryImpl.cs:
line 60
at NHibernate.Linq.NhQueryProvider.Execute(Expression expression) in
D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Linq\NhQueryProvider.cs:
line 31
at NHibernate.Linq.NhQueryProvider.Execute<TResult>(Expression expression)
in D:\Projects\NHibernate-Trunk\Core\src\NHibernate\Linq\NhQueryProvider.cs:
line 55
at System.Linq.Queryable.FirstOrDefault<TSource>(IQueryable`1 source)
at DataX.Tests.Repositories.TheModel.QueriesUsingLinq() in
ModelRepositoryFixture.cs: line 193
at DataX.Tests.Repositories.ModelRepositoryFixture.QueriesUsingLinq() in
ModelRepositoryFixture.cs: line 60
Si en vez de == uso StartsWith, funciona OK el query.
Abrazo!
Diego
--
Subscription settings:
http://groups.google.com/group/nhibernate-development/subscribe?hl=en