Вопрос

У меня есть объект, который я использую для хранения метаданных документа в таблице. Основной текст документа может быть очень большим, иногда > 2 ГБ, поэтому я буду хранить его в поле nvarchar (max) в SQL 2008. Позже я буду использовать SQL 2008 для индексирования этого поля. Я не буду использовать файловые потоки, потому что они очень ограничивают базу данных и предотвращают определенные типы схем блокировки параллелизма.

Этот объект предоставляется разработчику через LinqToSQL. Меня беспокоит, что поле будет слишком большим, и я видел, как .Net бомбардировался с исключением OutOfMemory, если текст > 1,5 ГБ.

Мне интересно, могу ли я рассматривать этот BLOB-объект как поток с Linq? Или мне нужно вообще обойти Linq, если я хочу использовать BLOB-объект?

Это было полезно?

Решение

Получив ответ на " Can LINQ запросить извлечение больших двоичных объектов [...] " Я подозреваю , что вам не повезло. System.Data.Linq.Binary Тип не имеет никакого механизма для потоковой передачи - в основном это просто неизменное представление байтового массива.

Возможно, вы могли бы использовать глубокое LINQ mojo, но я подозреваю, что оно должно быть довольно глубоким.

Вполне возможно, что Entity Framework справится с этим - я этого не исследовал.

Другие советы

Я закончил писать свой собственный метод для linq to Sql, используя метод записи, доступный для объектов varchar (max) в SQL. Это позволяет разработчикам вставлять фрагменты в БД для больших типов данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top