2012-01-06 41 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