Sunday, 7 December 2014

Serializing two classes from entity model to XML



I will start with explaining problem(s).1.IF I use standard serializer, its throws problem with reflecting type(as i already find out, because element of order is ICollection). 2.After changing for datacontractserializer.Even if object is populated with all necessary data(order with data and its elements with data).Its serializing only order(elements are cut out).So HOW serialize it all with Entity ?


Model classes, i get it little shorter:



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);
}}}}

No comments:

Post a Comment