2

我正在创建一个旨在从数据库返回数据的 WCF 服务。该数据库中的数据被设计为尽可能通用,因此可以用于多种用途。只有一个键类型被调用Entity,它上面有一个类型标志,它链接到另一个表,表示EntityType.

这是这两种类型的模型...

在此处输入图像描述

作为如何使用它的示例,假设类型是Continent, Country, State, City。有一个表用于计算对象的层次结构,因此为简单起见不必担心。

这就是目前数据以 XML 形式出现的方式......

XML 数据样本原样

最终我想要输出的是这样的......

示例自定义 XML 数据输出

问题是使用 .Net 的默认行为将其解析为 XML 和/或 JSON,它将使用我的Entity类作为 XML 节点名称,我不希望这种情况发生。我希望 XML 节点由EntityType与对象关联的名称命名。

我怎么能这样做以保持灵活性,以便我可以将另一个添加EntityType到数据库中,并且 XML/JSON 会带有相关的 XML 节点名称?

如果您需要,请寻求更多解释。由于这种性质非常通用,我在这里解释起来有点困难...... :)

4

1 回答 1

1

由于您使用的是 WCF,因此需要数据协定,因为客户端需要知道如何处理响应。我认为不可能制作动态数据合约,但您可以为每种情况创建特定的数据合约并将属性重命名如下:

[DataContract(Name = "Continent")]
public class Entity
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }
}

或者您可以保留当前的实体数据协定并添加一个更多属性来确定客户端应如何解释结果。

你怎么看?

问候,

于 2013-01-03T21:23:59.663 回答