0

我在制作客户端-服务器应用程序时遇到问题。我正在使用实体框架(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;
        }
    }

我会感谢你的帮助。谢谢。

4

1 回答 1

0

如果您不想失去延迟加载等功能,Entity Framework 几乎不可能使用内置的 XML 序列化程序和 BinaryFormatter 序列化程序。他们只是不适合处理这个问题。

您将不得不使用可以处理实体框架对象的不同序列化程序,例如 JSON.Net,或者编写您自己的序列化程序。

请参阅以下文章以了解其他有相同问题的人:

基本上,您要么保持延迟加载并使用其他序列化程序,要么丢失它并继续使用内置序列化程序。

于 2013-11-05T19:07:26.197 回答