var store = GetStore(); usando (IsolatedStorageFileStream fileStream = store.OpenFile (RootData, FileMode.Create)) { DataContractSerializer serializer = new DataContractSerializer (typeof (List)); serializer.WriteObject (fileStream, rootdatalist); }serializar el objeto con los subelementos C#
Pero esto solo serializa el rootdatalist, y no los subelementos. El rootdatalist tiene una propiedad List de nodos, ¿cómo la serializo para que obtenga la jerarquía de la lista serializada?
Ya que está DBML objetos generados de la propiedad nodos de la raíz es
public System.Data.Linq.Table<Node> Nodes
{
get
{
return this.GetTable<Node>();
}
}
retorno
Mi DataContext es:
public List<Root> GetRootList(Guid userid)
{
DataLoadOptions loadopts = new DataLoadOptions();
loadopts.LoadWith<Root>(s => s.Nodes);
this.DataContext.LoadOptions = loadopts;
return this.DataContext.Root.Where(s => s.Nodes.Count(n => n.UserId == userid) > 0).ToList();
}
la EntitySet Nodo se ve de la siguiente manera en mi diseñador dbml
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Root_Node", Storage="_Nodes", ThisKey="Id", OtherKey="RootId")]
[global::System.Runtime.Serialization.DataMemberAttribute(Order=5, EmitDefaultValue=false)]
public EntitySet<Node> Nodes
{
get
{
if ((this.serializing && (this._Nodes.HasLoadedOrAssignedValues == false)))
{
return null;
}
return this._Nodes;
}
set
{
this._Nodes.Assign(value);
}
}
También tengo que tener la etiqueta [Include]
encima de mis propiedades o nada g se cargará. Editar :: Para otros que quieran serializar clases DBML http://blogs.msdn.com/b/wriju/archive/2007/11/27/linq-to-sql-enabling-dbml-file-for-wcf.aspx
¿Hay alguna información [DataMember] arriba 'Nodos'? ¿Y qué es 'Root' aquí? El hecho de que expone una 'Tabla' me hace pensar que es un 'DataContext', pero' DataContext' no es (AFAIK) destinado a ser parte del modelo serializable: es más el administrador que un objeto de dominio. (Una relación regular de un tipo generado por dbml unidireccional sería 'EntitySet ', no 'Tabla ') –
Es definitivamente parte de un contexto de datos, pero pensé que el objeto sería serializable cuando agregué la serialización unidireccional de acuerdo con el enlace inferior de mi publicación. Desafortunadamente no parece así. No estoy del todo seguro de lo que estoy haciendo mal – Jakob
@Jakob - exactamente; el * data-context * no está diseñado para ser serializable. Solo sus * entidades de dominio * se vuelven serializables. Sin embargo; ¿Cuál es tu objetivo aquí? Puede que tenga más que unos pocos trucos en la manga ... (humildemente presento que estoy * dolorosamente * familiarizado con la serialización de .NET en múltiples formas) –