現在の実装
SQL Server 2005 データベースには、xml 型の MessageXml という列を持つ、messages というテーブルがあります。
XElement 型の MessageXml というフィールドを持つ Message というクラスを生成する Linq to Sql クラスを含む C# ライブラリ プロジェクト。
XElement 型の MessageXml というプロパティを持つ MessagePayload クラスを公開する WCF Web サービス。
Web サービスは、Linq によって作成された Message クラスを SQL に提供しません。その中間として軽量のオブジェクトを使用します。
質問
XElement は本当に WCF サービスで使用したい型ですか、それともより良い型がありますか。サービスに渡す予定の xml は、完全なドキュメントである必要があります。また、xml ドキュメントを XElement としてロードするのに少し問題があります。サービスの軽量クラスで完全な xml ドキュメント タイプを公開する必要があると思いますが、XDocument と XmlDocument の違いについて少し混乱しています。
その上、シリアル化できない XDeclaration 型のプロパティが含まれているため、XDocument 型のプロパティを持つ WCF Message クラスを公開できません。
XmlDocument を使用する場合、Linq クラスと軽量クラスの間の変換で、xml 型のこの奇妙な変換を行う必要があります。
XmlDocument doc = new XmlDocument();
doc.LoadXml(message.MessageXml.ToString());
MessageEnvelope retVal = new MessageEnvelope()
{
MessageXml = doc,
};
XmlDocument は正しいもののように思えます。翻訳を行う必要があることはわかっていますが、可能な限り適切に近づけたいと考えています。