Если вы использовали BinaryFormatter
, то нет, не совсем - по крайней мере, не без десерилизации всей объектной модели, что обычно невозможно в базе данных.Это недокументированный формат, с очень небольшим количеством специальных запросов.
Примечание: BinaryFormatter
не является (IMO) хорошим выбором для всего, что связано с хранением элементов;Я полностью ожидаю, что это будет кусать вас в какой-то момент (т.е. не сможет надежно десериализовать данные, которые вы сохранили).Болевые точки:
- плотно привязаны к именам типов;может сломаться при перемещении кода вокруг
- , тесно связанного с именами полей;может сломаться при рефакторинге ваших классов (даже простое создание автоматически внедренного свойства является критическим изменением)
- склонен к включению графика большего размера, чем вы ожидаете, в частности, через события
Это, конечно, также зависит от платформы и потенциально от структуры.
На полном серьезе я потерял счет из числа вопросов "Я не могу десериализовать свои данные"Я принимал участие в течение многих лет ...
Есть альтернативные двоичные сериализаторы , которые do позволяют некоторую (ограниченную) возможность проверять данные через считыватель (безтребующий полной десериализации), и которые не становятся привязанными к метаданным типа (вместо этого, на основе контракта, что позволяет десериализацию в любую подходящую модель типа - не только для конкретного типа / версии).
Однако , я искренне сомневаюсь, что такая работа работает с чем-то, что приближается к эффективности в предложении WHERE
и т. Д .; вам понадобится SQL / CLRи т. д. IMO, лучший подход здесь - просто сохранить требуемые столбцы filter как данные в других столбцах, что позволяет добавлять индексацию и т. д. В тех редких случаях, когда я использовал тип xml
,это то же самое, что я сделал там (с небольшим предупреждением, что вы можете использовать вычисленные + сохраненные + индексированные столбцы «поднял» из базовых данных XML, что было бы здесь невозможно - дополнительные столбцыдолжно быть явным).