2011-03-13 17 views
5

Bir db'den varlık çerçevesiyle oluşturulan bir etki alanı modeli kullanıyorum. Bu etki alanı modelinin bir nesne örneğini xml'ye/serisine nasıl serileştirebilir/seri hale getirebilirim? Bunun için .edmx dosyasını kullanabilir miyim? herhangi bir kod örneği? teşekkürlervarlık Framework nesnesini xml'ye doğru devam et

cevap

5

XmlSerializer sınıfını kullanabilirsiniz. WCF ile tanıtılan DataContractSerializer da var.

SomeModel model = ... 
var serializer = new XmlSerializer(typeof(SomeModel)); 
using (var writer = XmlWriter.Create("foo.xml")) 
{ 
    serializer.Serialize(writer, model); 
} 

ve varolan bir model için XML geri serisini:

var serializer = new XmlSerializer(typeof(SomeModel)); 
using (var reader = XmlReader.Create("foo.xml")) 
{ 
    var model = (SomeModel)serializer.Deserialize(reader); 
} 
1

anlatmaya diğer seri hale getirmek için bu VB kodu kullanmak Örneğin XmlSerializer sınıfını kullanarak XML varolan nesne seri istiyorsa Xml EF modeli:

Try 
     Dim serializer = New XmlSerializer(GetType(GestionEDLService.Biens)) 
     Dim localFolder As StorageFolder = ApplicationData.Current.LocalFolder 
     Dim sampleFile As StorageFile = Await localFolder.CreateFileAsync("dataFile.xml", CreationCollisionOption.OpenIfExists) 
     Dim stream As Stream = Await sampleFile.OpenStreamForWriteAsync() 

     serializer.Serialize(stream, MyEFModel.MyEntity) 

    Catch ex As Exception 
     Debug.WriteLine(ex.ToString) 
    End Try 

DÜZENLEME: Ayrıca bu

gibi DataContractSerializer kullanabilirsiniz
Imports System.Runtime.Serialization 

Public Sub WriteToStream(sw As System.IO.Stream) 

    Dim dataContractSerializer As New DataContractSerializer(GetType(MyDataSource)) 

    dataContractSerializer.WriteObject(sw, _MyDataSource) 

End Sub 

Public Sub ReadFromStream(sr As System.IO.Stream) 

    Dim dataContractSerializer As New DataContractSerializer(GetType(MyDataSource)) 

    _MyDataSource = dataContractSerializer.ReadObject(sr) 

End Sub 

HTH