Entity framework 如何将ObjectContext序列化为类似于数据集(XML数据库)中的XML?

Entity framework 如何将ObjectContext序列化为类似于数据集(XML数据库)中的XML?,entity-framework,xml-serialization,dataset,strongly-typed-dataset,Entity Framework,Xml Serialization,Dataset,Strongly Typed Dataset,在数据集中有一个WriteXml或ReadXml方法 有人知道如何使用实体框架来实现这一点吗? 以前有人实现过吗?ObjectContext与数据集完全不同。谈论序列化它是没有意义的。基本上,我想用XML备份我的数据库,我不想从服务器而是从应用程序处理这个备份 我想我会处理上下文中触发的事件,然后保存数据 由于我希望xml文件的大小不会增长得太大(将保存100-300条简单短数据类型的小实体记录),因此我决定对xml DB进行同步工作: 以下是强类型dta集的部分类: Imports Syste

在数据集中有一个WriteXml或ReadXml方法

有人知道如何使用实体框架来实现这一点吗?
以前有人实现过吗?

ObjectContext与数据集完全不同。谈论序列化它是没有意义的。

基本上,我想用XML备份我的数据库,我不想从服务器而是从应用程序处理这个备份

我想我会处理上下文中触发的事件,然后保存数据

由于我希望xml文件的大小不会增长得太大(将保存100-300条简单短数据类型的小实体记录),因此我决定对xml DB进行同步工作:

以下是强类型dta集的部分类:

Imports System.Xml
Partial NotInheritable Class XmlDatabas : Inherits Data.DataSet
    Private ReadOnly XmlFileName As String = _
            My.Application.Info.DirectoryPath & "\Data.xml"

    Private Sub SeawaveData_Initialized(sender As Object, e EventArgs) _
                Handles Me.Initialized
        If Not IO.File.Exists(XmlFileName) Then WriteXml(XmlFileName)
        ReadXml()
    End Sub

    Public Shadows Sub AcceptChanges()
        MyBase.AcceptChanges()
        WriteXml()
    End Sub

    Public Overloads Sub ReadXml()
        ReadXml(XmlFileName)
    End Sub
顺便说一句,如果你自找麻烦,我甚至做了一个快速性能测试,只是为了得到一个指示(不要依赖,这是一个非常抽象的测试,如果你想创建一个更大文件的XmlDb,请再次测试!)。 还可以考虑,该文件不测试XML文件以进行外部更改,可以用于Win应用程序,在ASP.NET中或当您希望允许多个请求时,考虑实现对现有应用程序的更改进行检查的方法,或者生成具有提交更改队列的DAL DLL。
Module Program
    Sub Main()
        Using ds As New XmlDb
            Dim longString = ""
            For index As Integer = 1 To 250
                longString &= "aaaaaaaaaaaaaaaaaaaaaaaaa"
            Next
            Dim step1 = Now
            For index As Integer = 1 To Short.MaxValue
               ds.Account.AddAccountRow(index.ToString, longString, True, True, _
                    longString, "", "", longString, longString, longString, _
                    longString, longString, longString, longString, longString, _
                    longString)
            Next
            Dim step2 = Now
            ds.AcceptChanges()
            Dim step3 = Now
            Console.WriteLine("step 1 took: {0:T}", step2 - step1)
            Console.WriteLine("step 2 took: {0:T}", step3 - step2)
            Console.WriteLine("entire operation took: {0:T}", step3 - step1)
        End Using
        Stop
    End Sub
End Module
    Public Overloads Sub WriteXml()
        WriteXml(XmlFileName)
    End Sub
End Class

Results:
step 1 took: 00:00:01.3390000
step 2 took: 00:00:23.5280000
entire operation took: 00:00:24.8670000
24.8秒,大啊?
想知道xml文件有多大吗?2062857146字节,即1967.293878553 MB,我知道,因此我问是否有人实现了类似的东西,因为如果没有,我必须是他,你会序列化什么?任何东西,字符串,对象等等,但ObjectContext不是你的数据库。你会把它反序列化吗?你是对的我不知道该说什么,你有什么好主意吗?也许在SavingChanges事件中,我会将每个承诺的表名、行id、时间跨度保存到数据库中,并有一个计划的win服务,该服务会将这些行并行地添加到xml数据库中,当服务器关闭时,我仍然有一个问题。我基本上是在寻找一种方法,使对象上下文与两个数据库一起工作:sql和xml,它们是否都同步,如果服务器关闭,则转到xml,然后将sql与xml同步,诸如此类。