2012-01-06 3 views
4

私はMoviesDB.dbmlという名前のLINQ - >クラスファイルを持っています。それに1つのテーブル "Movie"を追加しました。私はすべてのメソッドの中で実装したクラス "Movies"を作成しました。リストをバインドするときにリストを取得しますLINQ ToList()のシリアル化エラー?

方法GetAllMoviesは、私は以下の取得:

Type 'DyMvWebsite.Movie' in Assembly 'DyMvWebsite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable. 

メソッドのコード:その後

 public static List<Movie> GetAllMovies() 
    { 
     List<Movie> oMoviesList = new List<Movie>(); 

     using (MoviesDBDataContext oMoviesDBDataContext = new MoviesDBDataContext()) 
     { 
      oMoviesList = oMoviesList.ToList<Movie>(); ; 
     } 

     return oMoviesList; 
    } 

私が入れて試してみました[Serializableを] "Movies"クラスの属性を変更し、linqデザイナーファイルにも入れてみましたが、同じ問題です。

編集:

は 'マッシミリアーノPelusoは' 提案どのような次の後、私は新しいエラーを受け取っ:Movieクラスに含まれる

Type 'System.Data.Linq.ChangeTracker+StandardChangeTracker' in Assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable. 
+0

問題は解決しましたか?以下の答えは正しいようです。 –

+0

いいえ、新しいエラーが発生しました:アセンブリ 'System.Data.Linq、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'で 'System.Data.Linq.ChangeTracker + StandardChangeTracker'という新しいエラーが発生しました 'シリアル化可能とマークされていません – ykh

+0

あなたは以下の答えを受け入れました。 –

答えて

3

クエリを発射する前に

MoviesDBDataContext.ObjectTrackingEnabled = false; 

これを試してみてください。

これでも失敗した場合は、Movieクラスに似たシリアライズ可能クラスを作成し、プロパティをマップします。

+0

あなたとMassimiliano Pelusoに感謝しました。 – ykh

2

すべてが同様Serializable

適用しなければなりませんこの型のインスタンスを直列化できることを示す型へのSerializableAttribute属性。シリアル化されるオブジェクトのグラフのいずれかの型にSerializableAttribute属性が適用されていない場合、共通言語ランタイムはSerializationExceptionをスローします。 クラスがシリアル化プロセスを制御するISerializableインターフェイスも実装している場合でも、SerializableAttribute属性を適用します。 SerializableAttributeによってマークされた型のパブリックフィールドとプライベートフィールドはすべて、シリアル化プロセスをオーバーライドするISerializableインターフェイスを実装していない限り、既定でシリアル化されます。既定のシリアル化プロセスでは、NonSerializedAttribute属性でマークされたフィールドは除外されます。シリアライズ可能な型のフィールドに、特定の環境に固有のポインタやハンドルなどのデータ構造が含まれていて、異なる環境で意味のある再構成ができない場合は、そのフィールドにNonSerializedAttribute属性を適用できます。

詳細:

http://msdn.microsoft.com/en-us/library/system.serializableattribute(v=VS.100).aspx

+0

linqクラス "Movie"とクラス "Movies"の両方に適用しても同じエラーが発生していますが、どこに原因があるのか​​何とか尋ねることができますか、私たちはこれに対して苦労していますか? – ykh

+0

多分movieにはシリアライザブルではない(この場合はISerializableインターフェイスを実装する必要があります)複雑な型が含まれているか、[Serializable]属性でマークされていません –

+0

新しいエラーが発生しました。 'System.Data.Linq.ChangeTracker + StandardChangeTracker 'アセンブリ内' System.Data.Linq、バージョン= 4.0.0。0、Culture =ニュートラル、PublicKeyToken = b77a5c561934e089 'はシリアル化可能としてマークされていません。 – ykh

関連する問題