C# 将两个类从实体模型序列化为XML

C# 将两个类从实体模型序列化为XML,c#,xml,database,entity-framework,serialization,C#,Xml,Database,Entity Framework,Serialization,我将从解释问题开始。1.若我使用标准序列化程序,它会引发反射类型的问题(正如我已经发现的,因为order元素是ICollection)。 2.更改为datacontractserializer后。即使对象填充了所有必要的数据(数据顺序及其元素数据顺序)。其序列化顺序仅为(元素被剪切)。那么如何使用实体将其全部序列化 模型类,我把它缩短了一点: using System; using System.Collections; using System.Collections.Generic; usi

我将从解释问题开始。1.若我使用标准序列化程序,它会引发反射类型的问题(正如我已经发现的,因为order元素是ICollection)。 2.更改为datacontractserializer后。即使对象填充了所有必要的数据(数据顺序及其元素数据顺序)。其序列化顺序仅为(元素被剪切)。那么如何使用实体将其全部序列化

模型类,我把它缩短了一点:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;

namespace EntityError
{
public partial class Order
{
public virtual int Id{get;set;}
public virtual Nullable<int> 
OrderNumber{get;set;}
 public virtual ICollection<Element> Element
    {get;set;}

public partial class Element
{
    public virtual int Id
    {get;set;}

    public virtual int OrderId
    {get;set;}}
public virtual Order Order
    {get;set;}



namespace EntityError
{
    class Program
    {
    static void Main(string[] args)
    {
        TestEntities TE = new TestEntities();
        Order oo = new Order();
        Element el = new Element();
        TE.Order.Load();
        TE.Element.Load();
        Serialize(oo);

        var orders = TE.Order;
        foreach (var item in orders)
        {
            oo.Id = item.Id;
            oo.OrderNumber = item.OrderNumber;

            var elem = TE.Element;
            foreach (var e in elem)
            {
                el.Id = e.Id;
                el.ItemNumber = e.ItemNumber;
                el.Order = e.Order;
                el.OrderId = el.OrderId;
                el.Price = e.Price;
                el.Quantity = e.Quantity;
                oo.Element.Add(el);
            }}}
    static public void Serialize(Order oo)
                { 
                    XmlSerializer serializer = new XmlSerializer(typeof(Order)); 
                    using (TextWriter writer = new StreamWriter(@"C:\Xml.xml"))
                    {
                        serializer.Serialize(writer, oo); 
                    }}}}
使用系统;
使用系统集合;
使用System.Collections.Generic;
使用System.Collections.ObjectModel;
使用System.Collections.Specialized;
命名空间实体错误
{
公共部分类序
{
公共虚拟整数Id{get;set;}
公共虚拟可空
订单号{get;set;}
公共虚拟ICollection元素
{get;set;}
公共部分类元素
{
公共虚拟整数Id
{get;set;}
公共虚拟整型医嘱ID
{get;set;}}
虚拟公共秩序
{get;set;}
命名空间实体错误
{
班级计划
{
静态void Main(字符串[]参数)
{
TestEntities TE=新的TestEntities();
订单oo=新订单();
元素el=新元素();
TE.Order.Load();
TE.Element.Load();
序列化(oo);
var订单=TE订单;
foreach(订单中的var项目)
{
oo.Id=item.Id;
oo.OrderNumber=item.OrderNumber;
变量元素=TE.元素;
foreach(要素中的变量e)
{
el.Id=e.Id;
el.ItemNumber=e.ItemNumber;
el.订单=e.订单;
el.OrderId=el.OrderId;
el.价格=e.价格;
el.数量=e.数量;
oo.Element.Add(el);
}}}
静态公共void序列化(订单oo)
{ 
XmlSerializer serializer=新的XmlSerializer(typeof(Order));
使用(TextWriter=newstreamWriter(@“C:\Xml.Xml”))
{
serializer.Serialize(writer,oo);
}}}}

1)您的代码未编译。请尝试创建一个。2)您序列化了
Order oo
,但从未填充它。这会重现问题吗?3)您在
Order
中将
元素作为嵌套类显示,并且
Order具有属性
公共虚拟订单订单'。这是正确的,还是您遗漏了一些大括号?我必须把所有的项目放在适当的地方,这样它才能正确编译。所以我把最重要的部分放在了代码中。类中也应该有xml标记,我知道,我也在尝试。希望有人面对这个问题,知道答案,而不需要所有的代码。好的,我在这里添加了解决方案。这是一个带有序列化程序的解决方案,它提供了pe反射误差