Linq-to-sql-object をビューステートに設定しようとすると、オブジェクトをシリアライズ可能にする必要があるというランタイム例外が発生します。
問題をグーグルで検索しましたが、問題の解決策が見つかりません。これらのオブジェクトをシリアライズ可能にすることは可能ですか? これらのオブジェクトは自動生成されるため、クラスの前に [Serializable] 属性を追加するだけでは不可能であり、特定の dbml ファイルでこの設定を見つけることができません。
前もって感謝します!
Linq-to-sql-object をビューステートに設定しようとすると、オブジェクトをシリアライズ可能にする必要があるというランタイム例外が発生します。
問題をグーグルで検索しましたが、問題の解決策が見つかりません。これらのオブジェクトをシリアライズ可能にすることは可能ですか? これらのオブジェクトは自動生成されるため、クラスの前に [Serializable] 属性を追加するだけでは不可能であり、特定の dbml ファイルでこの設定を見つけることができません。
前もって感謝します!
Viewstate に配置するには、クラスに [Serializable] 属性を付ける必要があります。データベースから取得するクラスにその属性を簡単に配置できたとしても、それはお勧めしません。
あなたがしなければならないこと、そしてとにかくしなければならないことは、Viewstate に入れたいデータを表すクラスを定義することです。次に、これらにデータベースからのデータを入力し、必要に応じて Viewstate で使用します。これは問題を解決するだけでなく、ビュー オブジェクトをデータベース オブジェクトから分離するので、必要に応じて Viewstate オブジェクトを変更したり、Viewstate オブジェクトにデータを入力できる限り、データベースからデータを取得する方法を変更したりできます。
ここで関心の分離を参照してください: http://en.wikipedia.org/wiki/Separation_of_concerns
編集:
生成されたクラスは部分クラスのように見えるため、同じ名前の別の部分クラスを作成してシリアル化可能としてマークすることをテストしました。クラスをシリアル化することができ、両方の部分クラスのプロパティが含まれていました。さらにテストを重ねた結果、問題が発生し始めたので、可能かもしれませんが、独自のシリアライズ可能なクラスを維持するのと同じくらい確実です。