Reputation: 6184
Without going into whether this is a good or bad idea:
Is it possible to store a LINQ-to-SQL domain object in the ASP.NET Session, when the session is out-of-process?
[EDIT] I'm currently getting the following error and asked this question because I suspect the LINQ-to-SQL objects:
Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted. The same restriction applies if similar serialization is done by the custom session state store in 'Custom' mode. [/EDIT]
e.g.
Session["Zoo"] = new Zoo() {
new Lion(),
new Tiger(),
new Elephant()
}
where:
and the web.config file contains
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10"
sqlConnectionString="SqlStateConnectionString"
sqlCommandTimeout="30"
timeout="20"
regenerateExpiredSessionId="true"/>
Upvotes: 4
Views: 4409
Reputation: 117280
To use the binary formatter (like SessionState use I believe), you would need to generated your code yourself from the DBML (I do that currently with a Linq2Sql T4 template).
The following need to be mark as [NonSerialized]
:
EntityRef
EntitySet
Also the constructor logic need to be moved to OnCreated
. You must also make sure OnCreated
is called when deserializing so the object can be useful again. The is done with the [OnDeserializing]
attribute.
Upvotes: 4
Reputation: 12397
Serialize them using the datacontractserializer before storing in session or anything else that may want to serialize... Recently discussed here:
http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/81c84ff4-059b-474f-9c69-b8c59027fd48
Upvotes: 1
Reputation: 33867
I would believe that you would need to mark your objects as being serializable. I'm not sure if there is way to do this for all the generated objects, but for those that you are putting into session, you could create a partial class (e.g. of Lion) and give it the Serializable attribute.
Upvotes: 1