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.
试试这个
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