オブジェクトグラフをシリアル化しようとしています。エンティティセットである子エンティティをロードする必要があるまでは機能します。システムはそれをシリアル化することを許可しません...それは私にこのエラーを与えます:
タイプ'System.Data.Linq.EntitySet`1[NetDataContractSerializerTest.JobService]'はシリアル化できません。DataContractAttribute属性でマークを付け、シリアル化するすべてのメンバーをDataMemberAttribute属性でマークすることを検討してください。タイプがコレクションの場合は、CollectionDataContractAttributeでマークすることを検討してください。サポートされている他のタイプについては、Microsoft.NETFrameworkのドキュメントを参照してください。
これが私が使用しているコードです:
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)
戻ってエラーが発生します。
個人的には、JobServicesにToList()を追加する必要があると思いますが、残念ながらできません。
dataloadOptions.LoadWith(j => j.JobServices.ToList())
これはエラーをスローします。
何か案は?