сохранить экземпляр объекта Entity Framework в xml - PullRequest
5 голосов
/ 13 марта 2011

Я использую модель предметной области, сгенерированную из базы данных с каркасом сущностей.Как я могу сериализовать / десериализовать экземпляр объекта этой модели домена в / из XML?Могу ли я использовать файл .edmx для этого?какие-нибудь примеры кода?спасибо

Ответы [ 2 ]

5 голосов
/ 13 марта 2011

Вы можете использовать класс XmlSerializer .Существует также DataContractSerializer , который был представлен в WCF.Например, если вы хотите сериализовать существующий объект в XML с использованием класса XmlSerializer:

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 голос
/ 17 июня 2012

Я использую этот код 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...