2013-04-20 2 views
0

Im на C# и Im возникли проблемы с десериализации списка из файла XML я создал используемый DataContractSerializer которым имеет список лиц из Entity Framework в нем, код, который я использовал это:Брус десериализации список из DataContractSerializer

List<Proveedores> proveedores = ObtenerEntidadesProveedores(); 

foreach (Proveedores proveedor in proveedores) 
{ 
    proveedor.ProveedoresDomicilios.Load(); 
} 

Type[] tipoColeccion = new Type[1]; 
tipoColeccion[0] = typeof(Proveedores); 

DataContractSerializer serializador = new DataContractSerializer(typeof(List<Proveedores>), tipoColeccion); 
serializador.WriteObject(entrada, proveedores); 
salida = entrada; 

Im, использующий DataContractSerializer, потому что он отобразит все связанные объекты из Proveedores в XML.

Теперь проблема заключается в том, что, когда я пытаюсь получить его обратно, я получаю список только с одним элементом:

List<Proveedores> proveedores = new List<Proveedores>(); 

Type[] tipoColeccion = new Type[1]; 
tipoColeccion[0] = typeof(Proveedores); 

DataContractSerializer serializador = new DataContractSerializer(typeof(List<Proveedores>), tipoColeccion); 
proveedores = serializador.ReadObject(entrada) as List<Proveedores>; 

Когда генерируется XML имеет много из них, как это:

<ArrayOfProveedores xmlns="http://schemas.datacontract.org/2004/07/MxPOS10.Sistema.Datos" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <Proveedores z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"> 
     <EntityKey z:Id="i2" xmlns="http://schemas.datacontract.org/2004/07/System.Data.Objects.DataClasses" xmlns:a="http://schemas.datacontract.org/2004/07/System.Data"> 
      <a:EntityContainerName>MxPOSv10r1Entidades</a:EntityContainerName> 
       <a:EntityKeyValues> 
        <a:EntityKeyMember> 
         <a:Key>IDProveedor</a:Key> 
         <a:Value i:type="b:int" xmlns:b="http://www.w3.org/2001/XMLSchema">0</a:Value> 
        </a:EntityKeyMember> 
       </a:EntityKeyValues> 
      <a:EntitySetName>Proveedores</a:EntitySetName> 
     </EntityKey> 
     <Compras/> 
     <Dumb i:nil="true"/> 
     <IDProveedor>0</IDProveedor> 
     <Nombre>PANADERIAS DEL CENTRO</Nombre> 
     <ProveedoresContacto/> 
     <ProveedoresDomicilios/> 
     <RFC>98982u24ujjjj</RFC> 
     <RegistroActivo>false</RegistroActivo> 
    </Proveedores> 

    <.... more Proveedores ....> 

</ArrayOfProveedores> 

Любые предложения?

+0

Это должно быть каким-то образом связано с определением 'Proveedores', или что-то еще, вы не говорит нам, потому что он отлично работает с простым классом «Proveedores». – Thorarin

+0

Привет, определение Proveedores никогда не было затронуто, поскольку оно было предоставлено платформой Entity Framework, и оно может быть сериализовано без проблем, потому что я получаю XML со списком всех объектов Proveedores, которые у меня есть в моей базе данных ... –

ответ

0

Какой бы объект вы не сериализуете, настройтесь так. Что это делает, устанавливает контракт collectiondata с элементом, Proveedore (s)

[DataContract(Name = "Proveedore", Namespace = "")] 
    public class Proveedores { 

    } 

    [CollectionDataContract(Name = "ArrayOfProveedores", ItemName = "Proveedore", Namespace = "")] 
    public class ProveedoresList : List<Proveedores> { 

    } 
    public class FileRead{ 
     [DataMember(Name = "ArrayOfProveedores", Order = 0)] 
     public ProveedoresList Pros { get; private set; } 
    } 
Смежные вопросы