答えて

0

基本的には私のデータベースをXMLでバックアップしたいのですが、このバックアップをサーバーからではなくアプリケーションから処理したいと思っています。

コンテキストで発生したイベントを処理し、データを保存すると思います。ここで

がある:私はxmlファイルのサイズがあまりにも成長する(簡単な短いデータ型の100-300小さな実体レコードのように開催します)と一致しないexpextとして

は、私は、XML DBに対して同期的に動作することを決定しました強く型付けされたDTAセットのパーシャルクラス:私もちょうど表示を得るために迅速perfoanceテストをしたので、あなたはあなたの自己を気にした場合BTW

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ファイルをテストしないこと、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.2938785553バイトです。

+0

しかし、ObjectContextはあなたのデータベースではありません。あなたはそれをデシリアライズしますか? –

+0

あなたは正しいです私は何を言うべきではありません、あなたは良いアイデアを持っていますか?たぶんSavingChangesイベントで、私はテーブル名、行id、各コミットメントのタイムスパンをdbに保存し、サーバがダウンしているときにパラレルでxml DBにそれらの行を追加する予定のウィン・サービスを持っています問題。私は基本的にオブジェクトのコンテキストを2つのDBで動作させる方法を探しています:sqlとxml、両方が同期されます。サーバがxmlになり、sqlとxmlの同期があればそのようになります。 – Shimmy

0

ObjectContextは、DataSetと同じものではありません。それをシリアライズすることについて話すのは理にかなっていません。

+0

私は知っていますので、そこに誰かがいるかどうか尋ねました。そのようなものを実装した人がいれば私は彼になる必要があります – Shimmy

+0

あなたは何をシリアル化しますか? –

+0

何か、文字列、オブジェクトすべて – Shimmy

関連する問題