【发布时间】:2011-03-13 01:51:35
【问题描述】:
我正在使用从带有实体框架的数据库生成的域模型。如何将此域模型的对象实例序列化/反序列化到/从 xml?我可以为此使用 .edmx 文件吗?任何代码示例? 谢谢
【问题讨论】:
标签: c# entity-framework asp.net-mvc-2
我正在使用从带有实体框架的数据库生成的域模型。如何将此域模型的对象实例序列化/反序列化到/从 xml?我可以为此使用 .edmx 文件吗?任何代码示例? 谢谢
【问题讨论】:
标签: c# entity-framework asp.net-mvc-2
您可以使用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);
}
【讨论】:
我使用此 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
【讨论】: