Question

J'ai un objet que j'utilise pour stocker les métadonnées du document dans une table. Le corps du document peut être très volumineux, parfois > 2 Go donc je vais le stocker dans un champ nvarchar (max) dans SQL 2008. J'utiliserai SQL 2008 plus tard pour indexer ce champ. Je n'utiliserai pas de flux de fichiers car ils sont très restrictifs pour la base de données et empêchent certains types de schémas de verrouillage d'accès simultané.

Cet objet est exposé au développeur via LinqToSQL. Je crains que le champ ne soit trop grand et j'ai vu bombarder .Net avec une exception OutOfMemory si le texte est > 1,5 Go.

Alors, je me demande si je peux traiter cette goutte comme un flux avec Linq? Ou dois-je contourner complètement Linq si je veux utiliser un blob?

Était-ce utile?

La solution

Étant donné la réponse à & Can; peut un LINQ requête récupérer les BLOBs & [...] Je soupçonne que vous n'ayez pas de chance. System.Data.Linq.Binary le type n’a aucun mécanisme pour la diffusion en continu - en gros, c’est juste une représentation immuable de tableau d’octets.

Il est possible que vous puissiez invoquer un mojo LINQ profond, mais je suppose que cela devrait vraiment être assez profond.

Il est possible que Entity Framework s'en charge - je n'ai pas enquêté sur cela.

Autres conseils

J'ai fini par écrire ma propre méthode autour de linq en SQL en utilisant la méthode d'écriture disponible pour les objets varchar (max) en SQL. Cela permet aux développeurs d’insérer des insertions dans la base de données pour les types de données volumineux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top