【发布时间】:2013-11-05 18:54:45
【问题描述】:
我在制作客户端-服务器应用程序时遇到问题。 我正在使用 Entity Framework(EF),我需要序列化一个对象以通过包含 List 属性的套接字发送它。 我将 XMLSerialization 用于序列化部分。
我的问题是:当我尝试序列化一个新的调查对象并且选项列表为空时,我可以序列化对象调查。但是,当我将 OPTION 对象添加到 SURVEY.OPTIONS 列表时,我无法序列化该对象。
EF 从实体关系图自动生成的类之一是:
public partial class SURVEY
{
public SURVEY()
{
this.OPCIONs = new List<OPTION>();
}
public int id_survey { get; set; }
public System.DateTime initial_date { get; set; }
public System.DateTime end_date { get; set; }
public virtual List<OPTION> OPTIONs { get; set; }
}
我正在使用此代码从数据库中获取调查:
DateTime actualDate = new DateTime().Today;
private static ComedorCaniaDBContext context = new ComedorCaniaDBContext();
Survey survey = context.SURVEYs.Create()
survey = (SURVEY)context.SURVEYs
.Include("Options")
.Where(e => e.initial_date < actualDate && e.end_date > actualDate)
.FirstOrDefault();
我正在使用此代码进行序列化:
public static Byte[] ObjectToByteArray<T>(T obj)
{
try
{
using (MemoryStream ms = new MemoryStream())
{
XmlSerializer xmlS = new XmlSerializer(typeof(T));
xmlS.Serialize(ms, obj);
return ms.ToArray();
}
}
catch
{
return null;
}
}
感谢您的帮助。 谢谢。
【问题讨论】:
-
除了“它不起作用”之外究竟发生了什么?
-
选项是否可序列化?它有一个空的构造函数吗?抛出什么异常?
-
选项是可序列化的。抛出的异常类似于:“System.InvalidOperationException:检测到循环引用试图序列化 ServidorComedor.Models.SURVEY 类型的对象......”
标签: c# entity-framework sockets serialization