我将从解释问题开始.1.IF我使用标准的序列化器,它抛出反射类型的问题(因为我已经发现,因为顺序元素是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);
}}}}