Domanda

Ho un oggetto che sto usando per memorizzare i metadati del documento in una tabella. Il testo del corpo del documento può essere molto grande, a volte > 2 GB, quindi lo memorizzerò in un campo nvarchar (max) in SQL 2008. Userò SQL 2008 in seguito per indicizzare quel campo. Non userò i filestream perché sono molto restrittivi per il database e impediscono alcuni tipi di schemi di blocco della concorrenza.

Questo oggetto è esposto allo sviluppatore tramite LinqToSQL. La mia preoccupazione è che il campo sarà troppo grande e ho visto .Net esplodere con un'eccezione OutOfMemory se il testo è > 1,5 GB.

Quindi mi chiedo, posso trattare questo BLOB come un flusso con Linq? O devo ignorare del tutto Linq se voglio usare un BLOB?

È stato utile?

Soluzione

Data la risposta a " Can a LINQ query recupera BLOB [...] " sospetto sei sfortunato. Il System.Data.Linq.Binary type non ha alcun meccanismo per lo streaming - in pratica è solo una rappresentazione di array di byte immutabile.

Potrebbe esserci qualche mojo LINQ profondo che potresti invocare, ma sospetto che dovrebbe essere piuttosto profondo.

È possibile che Entity Framework lo gestisca - non l'ho studiato.

Altri suggerimenti

Ho finito per scrivere il mio metodo su linq in SQL usando il metodo di scrittura disponibile per gli oggetti varchar (max) in SQL. Ciò consente agli sviluppatori di inserire inserti nel DB per tipi di dati di grandi dimensioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top