2011-03-13 192 views
5

我正在使用从具有实体框架的数据库生成的域模型。我如何序列化/反序列化这个领域模型的对象实例到/从XML?我可以使用.edmx文件吗?任何代码示例? 谢谢将实体框架对象实例保存到xml

回答

5

您可以使用XmlSerializer类。还有WCF推出的DataContractSerializer。例如,如果你想使用XmlSerializer类的现有对象序列化到XML:

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

和反序列化回XML到现有的模型:

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

我用这个VB代码序列化我EF模型,XML:

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 

编辑:您还可以使用的DataContractSerializer这样

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