C# 将两个类从实体模型序列化为XML
我将从解释问题开始。1.若我使用标准序列化程序,它会引发反射类型的问题(正如我已经发现的,因为order元素是ICollection)。 2.更改为datacontractserializer后。即使对象填充了所有必要的数据(数据顺序及其元素数据顺序)。其序列化顺序仅为(元素被剪切)。那么如何使用实体将其全部序列化 模型类,我把它缩短了一点: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
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反射误差