2012-01-06 57 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; 
    } 

在此之後,[Serializable接口]屬性在「電影」類中,並嘗試將其放入linq設計器文件中,但同樣的問題。

編輯:

以下什麼的Massimiliano 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

你的問題解決了嗎?下面給出的答案似乎是正確的。 – 2012-01-06 12:37:33

+0

不,我有一個新的錯誤:我得到一個新的錯誤,類型'System.Data.Linq.ChangeTracker + StandardChangeTracker'在程序集'System.Data.Linq,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'沒有標記爲可序列化 – ykh 2012-01-06 12:48:34

+0

您已接受下面給出的答案。 – 2012-01-06 12:50:25

回答

3

燒製查詢之前嘗試了這一點

MoviesDBDataContext.ObjectTrackingEnabled = false; 

如果仍然失敗,則解決方法是創建類似於Movie類的可序列化類,然後映射屬性。

+0

它的工作,感謝你和Massimiliano Peluso。 – ykh 2012-01-06 13:23:13

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類「電影」和類「電影」,仍然是同樣的錯誤,我可以追蹤它以某種方式知道原因在哪裏,我一直在爲此而苦苦掙扎? – ykh 2012-01-06 12:37:01

+0

也許電影包含一個不可序列化的複雜類型(在這種情況下你必須實現ISerializable接口),或者它沒有用[Serializable]屬性標記 – 2012-01-06 12:39:52

+0

我得到一個新的錯誤,類型'System.Data.Linq.ChangeTracker + StandardChangeTracker'在Assembly'System.Data.Linq,版本= 4.0.0。0,Culture = neutral,PublicKeyToken = b77a5c561934e089'未標記爲可序列化。 – ykh 2012-01-06 12:40:18