Я недавно видел это где-то еще, и мне не удалось найти там объяснения либо .Код в том виде, в котором он представлен, выглядит так: должен быть в порядке (хотя он очень выиграл бы от нескольких using
операторов, но они не сломали бы успех, поскольку вы вызываете .Close()
).
Однако!Я также хотел бы предупредить, что IMO BinaryFormatter
является , а не хорошим выбором для хранения в базе данных, поскольку это предполагает, что желательно прочитать его обратно в будущем .Тот факт, что BinaryFormatter
зависит от типа, делает его очень хрупким при создании версии приложения.Любое из: создание новой версии приложения, переименование / добавление / удаление поля, изменение свойства на автоматически реализуемое свойство, изменение версии .NET, изменение платформы, ... может сделать ваши данные либо нечитаемымиили только для чтения путем добавления большого количества настраиваемого связующего кода.
I настоятельно предлагает вам рассмотреть возможность использования сериализатора на основе контракта вместо BinaryFormatter
;любой из: DataContractSerializer
(но не NetDataContractSerializer
), XmlSerializer
, JavascriptSerializer
, JSON.Net.Если вам нужен двоичный файл для размера и производительности, то буферы протокола (с несколькими реализациями C #, включая protobuf-net) спроектированы (компанией Google), чтобы быть устойчивыми к версии, небольшими и быстрыми.Поскольку этот список также кроссплатформенный, это также означает, что ваши данные в безопасности, если, скажем, вы переключаете платформу на Java, Mono, WinRT (новая подсистема Windows 8), PHP или что-то еще.BinaryFormatter
будет не работать на любом из них.