我正在尝试序列化对象图。它一直有效,直到我必须加载一个作为实体集的子实体。系统不允许它序列化......它给了我这个错误:
无法序列化类型“System.Data.Linq.EntitySet`1[NetDataContractSerializerTest.JobService]”。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。如果该类型是一个集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。
这是我正在使用的代码:
DataClasses1DataContext dataAccessContext = new DataClasses1DataContext();
MemoryStream stream = new MemoryStream();
DataLoadOptions dataloadOptions = new DataLoadOptions();
dataloadOptions.LoadWith<JN>(j => j.nh);
dataloadOptions.LoadWith<JN>(j => j.JobServices);// this is the child entity set
dataAccessContext.LoadOptions = dataloadOptions;
var jn= dataAccessContext.JN.Where(j => j.LocnID.Trim() == "HT").ToList();
var netDataContractSerializer = new NetDataContractSerializer();
netDataContractSerializer.Serialize(stream, jn); //the error happens here
如果我删除
dataloadOptions.LoadWith(j => j.JobServices)
数据将与完整的 JN 和 nh 表一起序列化。但是当我把
dataloadOptions.LoadWith(j => j.JobServices)
回到我得到错误。
我个人认为它希望我将 ToList() 添加到 JobServices,不幸的是我做不到
dataloadOptions.LoadWith(j => j.JobServices.ToList())
这会引发错误。
有任何想法吗?