1

プラットフォームベンダーがデータベースに作成したデータテーブルに保存するのではなく、XElementオブジェクトにストレージメカニズムを配置する必要があるため、プロジェクトを書き直さなければならない過程にあります。それは苦痛になりつつあり、私はいくつかの洞察が必要です。

XmlSerializerを使用してオブジェクトグラフをXmlとの間でモーフィングし、指定されたXElementオブジェクトとの間で読み取り/書き込みを行うことができますが、オブジェクトグラフを変更する必要があるときにXmlデータをアップグレードする方法がわかりません。

誰かがこれに直面しましたか、そしてどの記事がそのような更新方法論を構築する方法を学ぶのに最も良いと証明しましたか。ありがとう。

4

1 に答える 1

1

私は以前にこの苛立たしい状況にあったことがあります...これはXmlSerializerを使用して行うことはできないと思います。XmlSerializerは、現在の型階層を中心にカスタム構築されたシリアル化ルーチンをコンパイルします。これを変更しすぎると、XMLは新しいクラス構造と互換性がなくなります。

XMLスキーマが生成されるとは思いません。唯一の「スキーマ」はコンパイルされたアドホックXMLシリアライザーコードです。

1)変更を反映する新しいクラス作成する、2)XMLを古いクラスに逆シリアル化する、3)古いオブジェクトと新しいオブジェクトの間にモーフを適用する、4)新しいオブジェクトをシリアル化する、5)名前を変更する古いクラスへのクラス、6)XMLの一時的な名前の置き換え、

しかし、それは非常に苦痛です(1回限りの場合は問題ないかもしれませんが)。

頻繁な変更に対処する必要がある場合(または現在のF#のようなシリアル化に適していないコンパイラを使用する場合)、ここでの最善のアイデアは、コードの変更に対処できる独自のXmlSerializer(おそらくLinq2XMLを使用)を作成することです。

于 2010-06-30T22:50:37.690 に答える