2010-11-03 4 views
2

Je rencontre une erreur étrange lors de l'exécution d'une requête dans nhibernate en utilisant linq.étrange nhibernate + linq + exception mysql

Si j'exécute la requête directement dans mysql, tout fonctionne. Si je réexécute la requête linq, je n'obtiens aucune erreur, mais seul le champ id (une chaîne) est récupéré. Si je cours la requête plusieurs fois, parfois la première rangée est récupérée correctement ...

La seule chose que mon google-fu a trouvé était this mysql bug, mais je ne peux pas voir comment ils sont liés.

EDIT: Il semble lié à un champ varbinary (128) que j'ai dans ma base de données. Si je supprime cette cartographie, tout fonctionne à nouveau. Je suis mappant ceci à un champ byte [] dans ma classe.

EDIT: J'utilise NHibernate 2.1.2.4000 NHibernate.Linq 1.1.0.1001 (les dernières versions de GA), et je l'ai essayé avec MySql Connector 6.1.2 et 6.2.4 (6.3.5 n'a pas réussi à installer pour une raison quelconque)

NHibernate.Util.ADOExceptionReporter [(null)] - System.IndexOutOfRangeException: Buffer index must be a valid index in buffer 
    at MySql.Data.MySqlClient.MySqlDataReader.GetBytes(Int32 i, Int64 fieldOffset, Byte[] buffer, Int32 bufferoffset, Int32 length) 
    at NHibernate.Driver.NHybridDataReader.GetBytes(Int32 i, Int64 fieldOffset, Byte[] buffer, Int32 bufferoffset, Int32 length) 
    at NHibernate.Type.AbstractBinaryType.Get(IDataReader rs, Int32 index) 
    at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name) 
    at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner) 
    at NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner) 
    at NHibernate.Persister.Entity.AbstractEntityPersister.Hydrate(IDataReader rs, Object id, Object obj, ILoadable rootLoadable, String[][] suffixedPropertyColumns, Boolean allProperties, ISessionImplementor session) 
    at NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, String instanceClass, EntityKey key, String rowIdAlias, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session) 
    at NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, EntityKey key, LockMode lockMode, String rowIdAlias, EntityKey optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session) 
    at NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, EntityKey[] keys, Object optionalObject, EntityKey optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session) 
    at NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies) 
    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) 

Quelqu'un at-il déjà rencontré cette erreur?

Répondre