Ich benutze Fluent NHibernate und versuche ein Image zu speichern. Kleine Bilder arbeiten, aber auch größere Bilder nicht, und ich erhalte diese Störung, wenn auf die Datenbank (SQL Server) zu speichern:NHibernate Image Storage - Die Länge des byte [] Wertes überschreitet die konfigurierte Länge
Ausnahme: Fehler Entwässern Eigenschaftswert für CFC.Domain.Vehicle.Image
Innerer Ausnahmefehler: Die Länge des byte [] -Werts überschreitet die im Mapping/Parameter konfigurierte Länge.
Hier ist mein Mapping:
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);
Die "Bild" Eigenschaft ist ein byte [].
Beachten Sie den CustomSqlType und die Länge, die die richtige Nvarchar (Max) -Spalte in der Datenbank erstellt. Ich habe unzählige andere Beiträge gelesen, in denen über ähnliche Probleme gesprochen wird, aber keine behandelt diesen spezifischen Fehler. Es ist nicht so, dass die Daten abgeschnitten und dann gespeichert werden, sondern nur, bevor die SQL-Abfrage gesendet wird.
Das Bild, das ich teste, ist nur die Standard Windows 7 Beispielbilder (Penguins.jpg natürlich), aber ein Bild um 1kb funktioniert gut.
Ich schätze die Hilfe! Hier ist der Anfang der Stack-Trace, wenn es hilft.
[HibernateException: Die Länge des byte [] Wert überschreitet, die Länge im Mapping/Parameter konfiguriert.]
NHibernate.Type.AbstractBinaryType.Set (IDbCommand cmd, Objektwert, Int32 index) + NHibernate.Type.NullableType.NullSafeSet (IDbCommand cmd, Objektwert, Int32 index) 397
NHibernate.Type.NullableType.NullSafeSet (IDbCommand st, Objektwert, Int32 Index, Boolean [] einstellbare, ISessionImplementor Sitzung) +62
NHibernate.Persister.Entity. AbstractEntityPersister.Dehydrate (Object id, Object [] Felder, Object rowID, Boolean [] includeProperty, Boolean [] [] includeColumns, Int32 Tabelle, IDbCommand Anweisung, ISessionImplementor Sitzung, Int32 index) +350[PropertyValueException : Fehler Entwässern Eigenschaftswert für CFC.Domain.Vehicle.Image]
NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate (Object id, Object [] Felder, Object rowID, Boolean [] includeProperty, Boolean [] [] includeColumns, Int32-Tabelle, IDbCommand-Anweisung, ISessionImplementor-Sitzung, Int32-Index) +510
NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate (Object id, Object [] Felder, Boolean [] includeProperty, Boolean [] [] includeColumns, Int32 j, IDbCommand st, ISessionImplementor Sitzung) +59 NHibernate.Persister.Entity .GeneratedIdentifierBinder.BindValues (IDbCommand ps) +79
NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert (SqlCommandInfo InsertSQL ISessionImplementor Sitzung, IBinder Bindemittel) +102
NHibernate.Persister.Entity.AbstractEntityPersister.Insert (Object [] Felder, Boolean [] NotNull, SqlCommandInfo sql, Object obj, ISessionImplementor Sitzung) +265
NHibernate.Persister.Entity.AbstractEntityPersister.Insert (Object [] Felder, Objekt obj, ISessionImplementor Sitzung) +358
NHibernate.Action.EntityIdentityInsertAction.Execute() +262
NHibernate.Engine.ActionQueue.Execute (IExecutable ausführbare) +56
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrRepl icate (Object Einheit, EntityKey Schlüssel, IEntityPersister persister, Boolean useIdentityColumn, Objekt etwas, IEventSource Quelle, Boolean requiresImmediateIdAccess) 811
NHibernate.Event.Default.AbstractSaveEventListener.PerformSave (Object Entität, Objekt-ID, IEntityPersister persister, Boolean useIdentityColumn, Objekt etwas, IEventSource Quelle, Boolean requiresImmediateIdAccess) 543
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId (Object Einheit, String entityName, Object alles, IEventSource Quelle, Boolean requiresImmediateIdAccess) +257
die Länge Mapping entfernen? – dotjoe
Danke für den Kommentar. Leider ist es dasselbe Problem ohne die Länge. Ich habe oben einen Stack-Trace hinzugefügt, um ebenfalls zu helfen. – jkriddle