2016-01-12 6 views
0

Я пытаюсь сохранить сеанс в SQLServer. Я знаю, должен ли объект храниться в SQL, чем он должен быть сериализован. И я также знаю, что мне нужно поместить атрибут [Serializable] в каждый класс, если это необходимо. Но проблема в том, что у меня есть более 2000 объектов и продолжает расти. Они тесно связаны друг с другом. Если я поставил один из них на сеанс, вероятно, мне нужно добавить [Serializable] attributre для всех из них, что бессмысленно. Что я хочу знать, так это как написать тот же код для интерфейса ISerializable, как и атрибут [Serializable] в базовом классе? Есть идеи? Или я должен добавить [Serializable] для каждого класса. Если у меня есть недостаток?Пользовательский ISerializable из базового класса

ответ

0

Создайте более конкретный, небольшой класс, который представляет данные, которые вам действительно нужны, чтобы сохраняться в сеансе и применять атрибут [Serializable] только в этом классе.

Пожалуйста, обратите внимание, что [Serializable] НЕ требуется сама Sql Server, а руководство сеанса в asp.net сессии

+0

Первый вариант приемлем, но из-за проекта конкретных ограничений я не могу создать, что «более конкретный» класс. – Murat

+0

Хорошо. Однако добавление атрибута Serializable не будет иметь никаких побочных эффектов, пока вы фактически не сериализуете. В этом случае runtime выдает исключение SerializationException, если какой-либо тип в графе сериализуемых объектов не имеет атрибута SerializableAttribute. (источник [MSDN] (https://msdn.microsoft.com/en-us/library/system.serializableattribute (v = vs.110) .aspx)) –

+0

Почему не все объекты по умолчанию являются Serializable? Похоже, мне нужно добавить атрибут [Serializable] ко всем моим классам. Честное поручение: \ – Murat