Sto utilizzando Fluent NHibernate e sto cercando di memorizzare un'immagine. Piccole immagini funzionano, ma immagini più grandi non lo fanno, e ricevo questo errore durante il salvataggio al database (SQL Server):NHibernate Image Storage - La lunghezza del byte [] valore supera la lunghezza configurata
Eccezione: Errore valore della proprietà di disidratazione per CFC.Domain.Vehicle.Image
Eccezione interna: La lunghezza del byte [] valore supera la lunghezza configurata nella mappatura/parametro.
Ecco il mio mappatura:
mapping.Table("Vehicle");
mapping.Id(x => x.Id, "VehicleID");
mapping.Map(x => x.Year).Not.Nullable();
mapping.Map(x => x.Image).CustomSqlType("VARBINARY(MAX)").Length(int.MaxValue);
La proprietà "Immagine" è un byte [].
Nota CustomSqlType e la lunghezza, che crea la colonna nvarchar (max) corretta nel database. Ho letto innumerevoli altri post che parlano di problemi simili, ma nessuno copre questo specifico errore. Non è che i dati vengano troncati e quindi salvati, ma solo errori prima di inviare la query SQL.
L'immagine che sto testando è solo le immagini campione standard di Windows 7 (Penguins.jpg ovviamente) ma un'immagine attorno a 1kb funziona correttamente.
Apprezzo l'aiuto! Ecco l'inizio della traccia dello stack, se aiuta.
[HibernateException: La lunghezza del [] valore byte supera la lunghezza configurato nella mappatura/parametro.]
NHibernate.Type.AbstractBinaryType.Set (cmd IDbCommand, Object value, indice Int32) + 207
NHibernate.Type.NullableType.NullSafeSet (IDbCommand cmd, Object value, indice Int32) 397
NHibernate.Type.NullableType.NullSafeSet (IDbCommand st, Object value, indice Int32, Boolean [] impostabile, sessione ISessionImplementor) +62
NHibernate.Persister.Entity. AbstractEntityPersister.Dehydrate (Object id, oggetto [] Campi, oggetto rowId, booleano [] includeProperty, booleana [] [] includeColumns, tavolo Int32, dichiarazione IDbCommand, sessione ISessionImplementor, indice Int32) 350[PropertyValueException : Errore disidratazione valore della proprietà per CFC.Domain.Vehicle.Image]
NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate (Object id, oggetto [] campi, oggetto rowId, booleano [] includeProperty, booleana [] [] includeColonne, tabella Int32, istruzione IDbCommand, sessione ISessionImplementor, indice Int32) +510
NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate (Object id, Object [] campi, booleano [] includeProperty, booleano [] [] includeColumns, Int32 j, IDbCommand st, sessione ISessionImplementor) 59 NHibernate.Persister.Entity .GeneratedIdentifierBinder.BindValues (IDbCommand ps) +79
NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert (SqlCommandInfo InsertSQL, sessione ISessionImplementor, IBinder legante) 102
NHibernate.Persister.Entity.AbstractEntityPersister.Insert (Object [] campi, booleano [] notnull, SqlCommandInfo sql, Object obj, sessione ISessionImplementor) 265
NHibernate.Persister.Entity.AbstractEntityPersister.Insert (Object [] campi, obj Object, sessione ISessionImplementor) +358
NHibernate.Action.EntityIdentityInsertAction.Execute (+262)
NHibernate.Engine.ActionQueue.Execute (IExecutable eseguibile) +56
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrRepl icate (Object entità, chiave EntityKey, IEntityPersister persister, booleano useIdentityColumn, oggetto qualsiasi cosa, fonte IEventSource, booleano requiresImmediateIdAccess) 811
NHibernate.Event.Default.AbstractSaveEventListener.PerformSave (Object entità, oggetto id, IEntityPersister persister, booleano useIdentityColumn, oggetto qualsiasi cosa, fonte IEventSource, booleano requiresImmediateIdAccess) 543
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId (Object entità, String entityName, oggetto qualsiasi cosa, fonte IEventSource, booleano requiresImmediateIdAccess) 257
rimuovere il mapping di lunghezza? – dotjoe
Grazie per il commento. Purtroppo è lo stesso problema senza la lunghezza. Ho aggiunto una traccia di stack sopra per aiutare pure. – jkriddle