当前实施
Sql Server 2005 数据库带有一个名为 messages 的表和一个名为 MessageXml 的 xml 类型的列。
具有 Linq to Sql 类的 C# 库项目,该类生成一个名为 Message 的类,其中包含一个名为 MessageXml 的 XElement 类型的字段。
WCF Web 服务公开一个 MessagePayload 类,该类具有一个名为 MessageXml 的 XElement 类型的属性。
该网络服务不提供我由 Linq to Sql 创建的 Message 类。我使用一个轻量级的物体作为中间人。
问题
XElement 真的是我想在 WCF 服务中使用的类型,还是有更好的类型。打算传递给服务的 xml 应该是一个完整的文档。此外,我在将 xml 文档作为 XElement 加载时遇到了一些麻烦。我认为我应该在服务的轻量级类中公开一个完整的 xml 文档类型,但我对 XDocument 和 XmlDocument 之间的区别有点困惑。
最重要的是,我无法使用 XDocument 类型的属性公开 WCF Message 类,因为它包含无法序列化的 XDeclaration 类型的属性。
如果我使用 XmlDocument,那么我必须在 Linq 类和轻量级类之间的翻译中对 xml 类型进行这种奇怪的转换。
XmlDocument doc = new XmlDocument();
doc.LoadXml(message.MessageXml.ToString());
MessageEnvelope retVal = new MessageEnvelope()
{
MessageXml = doc,
};
XmlDocument 似乎是正确的,我知道我必须做一些翻译,但希望尽可能接近合适。