0

我正在制作一个 CRUD Web 服务,并且我有对象(它们也是我系统中的数据库记录),假设客户有几十个属性。一些属性可能会在几年内发生变化。在极少数情况下,它们可以重命名,我认为这不是问题,因为这是内部实现,并且属性名称不需要在接口中。但是会有新的属性,我不知道如何正确处理它们。

我打算在架构中做的是这样的:

<xs:complexType name="tKeyValuePair">
 <xs:sequence>
  <xs:element name="fieldname" type="xs:string" />
  <xs:element name="value" type="xs:string" />
 </xs:sequence>
</xs:complexType>

<xs:element name="keyvaluepair" type="tKeyValuePair"  />

<xs:complexType name="tKeyValuePairs">
 <xs:sequence>
   <xs:element ref="keyvaluepair" minOccurs="0" maxOccurs="unbounded" />
 </xs:sequence>
</xs:complexType>

<xs:element name="fieldvalues" type="tKeyValuePairs" /> 

<xs:complexType name="tCustomerBase">
 <xs:sequence>
   <xs:element name="customername" type="xs:string" />
   <!-- here are other fields that can't change but can be minOccurs="0"-->
  <xs:element ref="fieldvalues"  />
</xs:sequence>

然后,我为每个扩展 tCustomerBase 的操作提供了一个类型,例如在 tCustomerUpdate 中添加 customerid 以作为查找正确客户的关键,在 tCustomerCreate 中添加 createuser 以存储在其他系统中创建它的人。

现在字段值是字符串,我知道哪个字段应该是哪种类型,我可以在我的 WS 中的 db 操作之前转换它们。

但这有意义吗?我应该使用

xsd:any 

以某种方式适用于其他领域?

怎么用

xsd:anyType

我可以使用它而不是字符串作为键值对值的类型吗?我将不胜感激帮助如何真正做到这一点!

除了我的问题,我很乐意听到关于这种模式设计的任何评论。所以请随意评论我在这里写的模型模式部分!

谢谢和最好的问候-马蒂

4

0 回答 0