将Entity Framework对象实例持久化为XML。

5

我正在使用由Entity Framework生成的数据库领域模型。如何将此领域模型的对象实例序列化/反序列化为XML?我可以使用.edmx文件吗?有任何代码示例吗? 谢谢。

2个回答

6
你可以使用 XmlSerializer 类。还有一个 DataContractSerializer,它是随 WCF 一起引入的。例如,如果你想使用 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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接