我正在使用流利NHibernate,並試圖存儲圖像。小圖像的工作,但較大的圖像不這樣做,我收到此錯誤時,保存到數據庫(SQL Server):爲CFC.Domain.Vehicle.ImageNHibernate圖像存儲 - 字節[]值的長度超過配置的長度
錯誤脫水屬性值:異常
內部異常: byte []值的長度超過映射/參數中配置的長度。
這是我的映射:
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);
「圖像」 屬性是一個字節[]。
請注意CustomSqlType和長度,它會在數據庫中創建適當的nvarchar(max)列。我讀過無數其他帖子在談論類似的問題,但沒有涵蓋這個具體的錯誤。並不是數據被截斷並保存,它只是在發送SQL查詢之前出錯。
我測試的圖像只是標準的Windows 7示例圖像(當然是Penguins.jpg),但1kb左右的圖像可以正常工作。
我很感激幫助!如果有幫助,這是堆棧跟蹤的開始。
[HibernateException的:字節[]值的長度超過在映射/參數配置的長度 。]
NHibernate.Type.AbstractBinaryType.Set(IDbCommand的CMD,對象的值, 的Int32指數)+ 207
NHibernate.Type.NullableType.NullSafeSet(IDbCommand的CMD,對象的值, 的Int32指數)397
NHibernate.Type.NullableType.NullSafeSet(IDbCommand的ST,對象的值, 的Int32索引,布爾[]可固化,ISessionImplementor會話)+62
NHibernate.Persister.Entity。 AbstractEntityPersister.Dehydrate(對象 ID,對象[]字段,對象ROWID,布爾[] includeProperty, 布爾[] [] includeColumns,的Int32表,IDbCommand的聲明, ISessionImplementor會議的Int32索引)+350[PropertyValueException :錯誤脫水屬性值 CFC.Domain.Vehicle.Image]
NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(對象 ID,對象[]字段,對象ROWID,布爾[] includeProperty, 布爾[] [] includeColumns,Int32表,IDbCommand語句, ISessionImplementor會話,Int32索引)+510
NHibernate.Persister.Entity.AbstractEntityPersister.Dehydrate(Object id,Object [] fields,Boolean [] includeProperty,Boolean [] [] includeColumns,Int32 j,IDbCommand st,ISessionImplementor會話) +59 NHibernate.Persister.Entity .GeneratedIdentifierBinder.BindValues(IDbCommand ps)+79
NHibernate.Id.Insert.AbstractReturningDelegate。PerformInsert(SqlCommandInfo insertSQL,ISessionImplementor會話的IBinder粘合劑)102
NHibernate.Persister.Entity.AbstractEntityPersister.Insert(對象[] 字段,布爾[] NOTNULL,SqlCommandInfo SQL,對象OBJ, ISessionImplementor會話)265
NHibernate.Persister.Entity.AbstractEntityPersister.Insert(對象[] 字段,對象OBJ,ISessionImplementor會話)358
NHibernate.Action.EntityIdentityInsertAction.Execute()262
NHibernate.Engine.ActionQueue.Execute(IExecutable可執行)+56
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrRepl icate(對象 實體的EntityKey鍵,IEntityPersister留存,布爾 useIdentityColumn,任何對象,IEventSource源,布爾 requiresImmediateIdAccess)811
NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(對象 實體對象ID,IEntityPersister留存,布爾 useIdentityColumn,任何對象,IEventSource源,布爾 requiresImmediateIdAccess)543
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(對象 實體,字符串的entityName,對象什麼,IEventSource源, 布爾requiresImmediateIdAccess)+257
卸下長度映射? – dotjoe
感謝您的評論。不幸的是,這是沒有長度的同樣的問題。我在上面添加了一個堆棧跟蹤以幫助。 – jkriddle