Używam Fluent NHibernate i próbuję zapisać obraz. Małe obrazy działać, ale nie większe obrazy, a ja ten błąd przy zapisie do bazy danych (SQL Server):NHibernate Image Storage - długość wartości bajtu [] przekracza długość skonfigurowaną
Wyjątek: Error wartość właściwości odwadniających dla CFC.Domain.Vehicle.Image
Wyjątek wewnętrzny: Długość wartości bajtu [] przekracza długość skonfigurowaną w odwzorowaniu/parametrze.
Oto mój mapowania:
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);
"obrazem" własność jest bajt [].
Należy zwrócić uwagę na parametr CustomSqlType i długość, który tworzy prawidłową kolumnę nvarchar (max) w bazie danych. Czytałem niezliczoną ilość innych postów mówiących o podobnych problemach, ale żaden nie obejmuje tego konkretnego błędu. Nie jest to, że dane są przycinane, a następnie zapisywane, to po prostu pomyłki przed wysłaniem zapytania SQL.
Obraz, który testuję, to tylko standardowe przykładowe obrazy systemu Windows 7 (oczywiście Penguins.jpg), ale obraz o wielkości 1kb działa dobrze.
Doceniam pomoc! Oto początek śledzenia stosu, jeśli to pomaga.
[HibernateException: długość bajtu [] Wartość większa niż długość skonfigurowany do odwzorowywania parametru /].
NHibernate.Type.AbstractBinaryType.Set (CMD IDbCommand wartość obiektu, wskaźnik Int32) + 207
NHibernate.Type.NullableType.NullSafeSet (IDbCommand cmd wartość obiektu, wskaźnik Int32) +397
NHibernate.Type.NullableType.NullSafeSet (IDbCommand St, wartość obiektu, wskaźnik Int32, logiczna [] ustawiane sesja ISessionImplementor) +62
NHibernate.Persister.Entity. AbstractEntityPersister.Dehydrate (Przedmiot id, obiekt [] Pola, obiekt RowID, logiczna [] includeProperty, logiczna [] [] includeColumns tabela Int32, rachunek IDbCommand, ISessionImplementor sesji, indeks Int32) +350[PropertyValueException : błąd odwadniający wartości właściwości dla CFC.Domain.Vehicle.Image]
NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate (Przedmiot identyfikatora obiektu [] pola, obiekt RowID, logiczna [] includeProperty, logiczna [] [] includeColumns, tabela Int32, instrukcja IDbCommand, Sesja ISessionImplementor, indeks Int32) +510
NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate (Przedmiot id, obiekt [] Obszary, logiczna [] includeProperty, logiczna [] [] includeColumns, Int32 J IDbCommand st sesja ISessionImplementor) +59 NHibernate.Persister.Entity .GeneratedIdentifierBinder.BindValues (IDbCommand ps) +79
NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert (SqlCommandInfo insertSQL sesja ISessionImplementor, IBinder spoiwo) +102
NHibernate.Persister.Entity.AbstractEntityPersister.Insert (Object [] pola, logiczna [] notNull, SqlCommandInfo SQL obj obiektu, sesji ISessionImplementor) + 265
NHibernate.Persister.Entity.AbstractEntityPersister.Insert (Object [] pola, OBJ Przedmiot sesja ISessionImplementor) +358
NHibernate.Action.EntityIdentityInsertAction.Execute() +262
NHibernate.Engine.ActionQueue.Execute (IExecutable wykonywalny) +56
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrRepl icate (Przedmiot jednostka, klucz EntityKey, IEntityPersister persister, logiczna useIdentityColumn, obiekt nic źródło IEventSource, logiczna requiresImmediateIdAccess) +811
NHibernate.Event.Default.AbstractSaveEventListener.PerformSave (Przedmiot podmiot ID obiektu, IEntityPersister persister, Boolean useIdentityColumn, obiekt czegokolwiek, źródło IEventSource, Boolean requiresImmediateIdAccess) +543
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId (Object podmiot, String entityName, obiekt czegokolwiek, źródło IEventSource, Boolean requiresImmediateIdAccess) +257
Usuń mapowanie długości? – dotjoe
Dzięki za komentarz. Niestety jest to ten sam problem bez długości. Dodałem również stos stosu powyżej, aby pomóc również. – jkriddle