Blob binario troncato a 8000 byte – SQL Server 2008 / varbinary (max)

Sono stato aggiornato da Fluent Nhibernate 1.0 con Nhibernate 2.1 per pre-release 1.x con NHibernate 3.0 GA e ho colpito quello che penso sia una regressione, ma voglio sentire se è davvero così.

Sto usando SQL Server Express 2008 e il dialetto MSSQL 2008 e ho una proprietà Image di tipo System.Drawing.Image e l’ho mappata in questo modo:

Map (food => food.Image) .Length (int.MaxValue) .Nullable (); 

La colonna Image nella tabella è di tipo varbinary(MAX) .

L’hbm generato per la proprietà è:

   ` 

Tuttavia, indipendentemente da ciò che faccio, il blob binario viene troncato a 8000 byte quando serializzato con le attuali versioni di FNH e NH. Questo non era il caso delle versioni precedenti.

    Idee del perché questo sta accadendo e come risolverlo / risolvere il problema?

    Anch’io ho riscontrato un problema simile e dopo molte sperimentazioni ho notato che quando si utilizzava Nhibernate per generare il mio schema in un file, il tipo di colonna generata era sempre la lunghezza 8000.

    L’impostazione di CustomSqlType su Varbinary (max) come suggerito sopra non ha fatto alcuna differenza, tuttavia, questo lavoro nel mio FluentMapping sembrava fare il trucco:

     Map(x => x.LogoBytes).CustomType("BinaryBlob").Length(1048576).Nullable(); 

    La lunghezza del corso è una quantità arbitraria, ma penso che dovrebbe essere impostato su qualcosa di meno di int.Max. Sono nuovo di Nibernato, quindi sto ancora cercando di capire le cose, ma sarei interessato a sapere se questo ti aiuta.

    In 3.0.0GA, la seguente mapping sembra fare il trucco:

       

    Questa è una regressione. Ho sollevato un bug e fornito patch su https://nhibernate.jira.com/browse/NH-2484

    Mappa (x => x.Image) .Length (100000) .Not.Nullable ();

    Aggiungi la ‘Lunghezza (MAXVALUE)’ come sopra e funzionerà 🙂

    Hai provato questo?

     Map(x => x.Image).CustomSqlType("VARBINARY(MAX)");