NHibernate 3.2 + MSSQL Blob
NHibernate 3.2 + MSSQL Blob
Furcsa dologgal kellett szembesülnöm a minap. Az MSSQL adatbázisban létrehoztam egy Blob mezőt (hogy pontosítsam magam, egy varbinary<max> mezőt), majd ebbe belepakoltam adatokat.
A visszaolvasáskor jött a szemkikerekedés, amikor is az adatok egy része jelent csak meg. Mintha a nagyobb része (46kb volt az adat) valahol elveszett volna. Jó sok nyomkövetés után döbbentem rá arra, hogy az MSSQL -be már a beszúráskor hibásan kerülnek be az adatok. Konkrétan 8000 byte! Jó sok nyomozás után végül sikerült rátapintanom a lényegre. Az NHibernate 3.2 valamilyen okból kifolyólag rosszul kezeli a varbinary típust. Megoldást nem nagyon találtam hozzá, ezért a forrásokat letöltöttem és szépen végig követtem, mi lehet a probléma. Végül sikerült rálelnem, és javítottam is.
A megoldás a mapping -ban rejlik, pontosan definiálni kell a mezőt ahhoz, hogy rendesen kezelje.
Nem elég ez:
<property name='Image' column='`Iame`' />
Helyette a következő definíciót kell alkalmazni:
<property name='Image' type='BinaryBlob'><column name='`Image`' sql-type='`varbinary(max)`'/></property>