【发布时间】:2013-12-06 14:24:52
【问题描述】:
我有一个 Windows 应用商店应用程序。当系统暂停和关闭时,我正在尝试保存状态。我正在序列化由 Entity Framework 6 生成的 Estimate 对象。它具有存储在 Estimate Entity 的 DataServiceCollections 中的子实体。当我反序列化它时,我收到以下错误:
无法将项目添加到集合中。当 DataServiceCollection 中的项目由 DataServiceContext 跟踪时,在项目加载到集合之前无法添加新项目。
我使用的序列化函数是:
public static string SerializeObject(object obj)
{
MemoryStream stream = new MemoryStream();
System.Runtime.Serialization.Json.DataContractJsonSerializer ser = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType(), Common.SuspensionManager.KnownTypes);
ser.WriteObject(stream, obj);
byte[] data = new byte[stream.Length];
stream.Seek(0, SeekOrigin.Begin);
stream.Read(data, 0, data.Length);
return Convert.ToBase64String(data);
}
public static T DeserializeObject<T>(string input)
{
System.Runtime.Serialization.Json.DataContractJsonSerializer ser = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
MemoryStream stream = new MemoryStream(Convert.FromBase64String(input));
return (T)ser.ReadObject(stream);
}
对这些函数的调用如下:
在保存状态下序列化:
e.PageState["SelectedEstimate"] = StringSerializer.SerializeObject(Est);
在恢复状态下反序列化:
Est = StringSerializer.DeserializeObject<Estimate>((string)e.PageState["SelectedEstimate"]);
是否有更好的序列化方法可以与 EF 实体一起使用?任何帮助将不胜感激。
吉姆
【问题讨论】:
标签: c# entity-framework serialization windows-store-apps