LINQ ToList()序列化错误

本文关键字:序列化 错误 ToList LINQ | 更新日期: 2023-09-27 18:19:32

我有一个名为MoviesDB.dbml的LINQ->class文件,我添加了一个表"Movie",我创建了一个类"Movies",我在其中实现了所有方法。

方法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设计器文件中,但问题相同。

编辑:

按照"Massimiliano Peluso"的建议,我收到了一个新的错误:

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. 

LINQ ToList()序列化错误

试试这个

  MoviesDBDataContext.ObjectTrackingEnabled = false;

在激发查询之前。

如果这仍然失败,那么解决方法将是创建类似于Movie类的可序列化类,并映射属性。

Movie类中包含的所有内容都必须是Serializable以及

将SerializableAttribute属性应用于类型,以指示可以序列化此类型的实例。如果正在序列化的对象图中的任何类型没有应用SerializableAttribute属性,则公共语言运行库将抛出SerializationException。应用SerializableAttribute属性,即使该类还实现了ISerializable接口来控制序列化过程。默认情况下,由SerializableAttribute标记的类型中的所有公共和私有字段都被序列化,除非该类型实现了ISerializable接口以覆盖序列化过程。默认的序列化过程不包括用NonSerializedAttribute属性标记的字段。如果可序列化类型的字段包含特定于特定环境的指针、句柄或其他数据结构,并且无法在其他环境中进行有意义的重构,则可能需要将NonSerializedAttribute属性应用于该字段

更多信息:

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