2016-01-12 2 views
0

J'essaie de conserver ma session dans SQL Server. Je sais si un objet doit être stocké dans SQL qu'il doit être sérialisé. Et je sais aussi que je dois mettre l'attribut [Serializable] sur chaque classe si nécessaire. Mais le problème est que j'ai plus de 2000 objets et ne cesse de croître. Ils sont liés ensemble très étroitement. Si je mets l'un d'entre eux en session, j'ai probablement besoin d'ajouter [Serializable] à chacun d'entre eux, ce qui est inutile. Ce que je veux savoir est comment écrire le même code pour l'interface ISerializable juste comme l'attribut [Serializable] fait dans la classe de base? Une idée? Ou devrais-je ajouter [Serializable] à chaque classe. Si je fais est-il un inconvénient?Personnalisé ISerializable à partir de la classe de base

Répondre

0

Créez une classe plus spécifique représentant les données dont vous avez réellement besoin pour persister en session et appliquez l'attribut [Serializable] uniquement à cette classe.

S'il vous plaît noter que [Serializable] n'est pas requis par Sql Server lui-même mais par la gestion de session en session asp.net

+0

Première option acceptable, mais en raison de contraintes spécifiques du projet je ne peux pas créer cette classe « plus spécifique ». – Murat

+0

Ok. Toutefois, l'ajout de l'attribut Serializable n'aura aucun effet secondaire tant que vous ne réaliserez pas la sérialisation. Dans ce cas, le moteur d'exécution renvoie SerializationException si l'attribut SerializableAttribute n'est pas appliqué à un type dans le graphe des objets en cours de sérialisation. (source [MSDN] (https://msdn.microsoft.com/en-us/library/system.serializableattribute (v = vs.110) .aspx)) –

+0

Pourquoi tous les objets ne sont pas Serializable par défaut? On dirait que j'ai besoin d'ajouter l'attribut [Serializable] à toutes mes classes. Une course de fou: \ – Murat