はLinq to sqlオブジェ直列化可能のセッションをするのでしょうか。
-
10-07-2019 - |
質問
いているかどうかはともかくという
保存しておくことはできるLINQ to SQLドメインのオブジェクトのASP.NET セッションの場合、セッション のプロセス?
[編集] 私は現在、以下のようなエラー、とても良いタイミングでの質問ではないのLINQ to SQLオブジェクト
できないserializeのセッションの状態です。にStateServer"と"SQLServer'モードASP.NET まserializeのセッションの状態、結果として非直列化可能オブジェクトのMarshalByRef物を禁止します。同一の制限は適用される場合同様の直列化を行うカスタムセッションの状態に店舗をカスタム仕様のモードになります。[編集]
例えば
Session["Zoo"] = new Zoo() {
new Lion(),
new Tiger(),
new Elephant()
}
場所:
- 動物園、ライオン、トラ、ゾウの全てのこの機会に是非ご高覧くださいZooDataContext
に着手してまいりました。configファイルに含まれて
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10"
sqlConnectionString="SqlStateConnectionString"
sqlCommandTimeout="30"
timeout="20"
regenerateExpiredSessionId="true"/>
解決
Serializeしているdatacontractserializer保管するセッションだといserialize... 最近ではここで説明されてい:
http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/81c84ff4-059b-474f-9c69-b8c59027fd48
他のヒント
バイナリフォーマッタを使用するには(SessionStateの使用と同様)、 DBMLから自分でコードを生成する必要があります(現在はLinq2Sql T4テンプレートを使用しています)。
以下は、 [NonSerialized]
としてマークする必要があります:
-
EntityRef
-
EntitySet
- すべてのイベント(これを行うにはボックスの外側を考える必要があります。読者のために練習してください)
また、コンストラクターロジックを OnCreated
に移動する必要があります。また、逆シリアル化するときに OnCreated
が呼び出されるようにして、オブジェクトが再び役に立つようにする必要があります。これは、 [OnDeserializing]
属性で行われます。
オブジェクトをシリアル化可能としてマークする必要があると思います。生成されたすべてのオブジェクトに対してこれを行う方法があるかどうかはわかりませんが、セッションに入れるオブジェクトについては、部分的なクラス(Lionなど)を作成してSerializable属性を与えることができます。