2012-01-06 7 views
4

나는 MoviesDB.dbml이라는 LINQ-> Class 파일을 가지고 있는데, 하나의 테이블 "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; 
    } 

내가 퍼팅 시도했던 [직렬화] 속성 "영화"클래스에서 시도하고 같은 문제가 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; 

이보십시오.

여전히 실패하는 경우 동영상 클래스와 비슷한 serializable 클래스를 만들고 해결할 수 있습니다.

+0

당신과 Massimiliano Peluso에게 감사합니다. – ykh

2

모든뿐만 아니라

적용 Serializable이어야합니다 SerializableAttribute 특성을이 형식의 인스턴스를 serialize 할 수 있음을 나타내는 형식으로 변환합니다. 직렬화되는 개체의 그래프에 유형에 SerializableAttribute 특성이 적용되지 않은 경우 공용 언어 런타임에서 SerializationException을 throw합니다. 클래스가 직렬화 프로세스를 제어하기 위해 ISerializable 인터페이스를 구현하는 경우에도 SerializableAttribute 특성을 적용하십시오. SerializableAttribute로 표시되는 형식의 모든 public 및 private 필드는 serialization 프로세스를 재정의하기 위해 ISerializable 인터페이스를 구현하지 않는 한 기본적으로 serialize됩니다. 기본 직렬화 프로세스에서는 NonSerializedAttribute 특성으로 표시된 필드를 제외합니다. 직렬화 가능 형의 필드에 포인터, 핸들, 또는 특정의 환경에 고유 해, 다른 환경에서 의미있게 재구성 할 수없는 그 외의 데이터 구조체가 포함되는 경우, 그 필드에 NonSerializedAttribute 속성을 적용하는 것이 좋습니다.

대한 추가 정보 :

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

+0

저는 linq 클래스 "Movie"와 클래스 "Movies"를 적용한 후에도 여전히 같은 오류가 발생했습니다. 원인을 알기 위해 어떻게 든 추적 할 수 있습니까?이 문제에 대해 고심하고 있습니까? – ykh

+0

movie에 serialize 할 수없는 복합 유형이 포함되어 있거나 (이 경우 ISerializable 인터페이스를 구현해야 함) [Serializable] 특성이 표시되어 있지 않습니다. –

+0

새로운 오류가 발생했습니다. 'System.Data.Linq.ChangeTracker + StandardChangeTracker 'in Assembly'System.Data.Linq, 버전 = 4.0.0.0, 문화 = 중립, PublicKeyToken = b77a5c561934e089 '는 직렬화 가능으로 표시되어 있지 않습니다. – ykh