【发布时间】:2014-07-02 14:41:05
【问题描述】:
我需要创建一个 Web 服务,用于在我的组织内集成来自 SAP 的信息。我有一个具有数据库结构的现有应用程序。 SAP 将使用 Web 服务将值存储到数据库中的相关表/列中。
为此,我需要向 SAP 团队提供将用于传递数据的 Xml 架构。现在,我对xml不太了解。我所做的是基于所有相关表的实体框架类创建了 Dto。这包括 8 个不同的类别:
RFQ 是 base class,它可以包含 RFQGoods 或 RFQServices。
接下来,我尝试使用 xsd.exe 工具生成架构,但收到了以下结果:
错误:处理“RfqService.dll”时出错。
- 反映类型“RfqService.DataTransferObjects.RfqDto”时出现错误。
- 无法序列化
的成员“RfqService.DataTransferObjects.RfqDto.RFQGoods” 键入 'System.Collections.Generic.ICollection1[[RfqService.DataTransferObjects.RfqGoodDto, RfqService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]', see inner exception for more details. - Cannot serialize member RfqService.DataTransferObjects.RfqDto.RFQGoods of type System.Collections.Generic.ICollection1[[RfqService.DataTransferObjects.RfqGoodDto, RfqService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] 因为它是一个接口。
我认为我需要的是正确的 xml attributes 用于类及其每个 parameters,但我不知道我需要添加哪些属性才能使其工作并且无法找到.下面是 RfqDto 类:
[DataContract]
public class RfqDto
{
[DataMember]
public int RfqId { get; set; }
[DataMember]
public bool IsAbove30k { get; set; }
[DataMember]
public string ReferenceNumber { get; set; }
[DataMember]
public string ContactPersonName { get; set; }
[DataMember]
public string ContactPersonTelephoneNumber { get; set; }
[DataMember]
public string ContactPersonCellPhone { get; set; }
[DataMember]
public string BuyerName { get; set; }
[DataMember]
public string BuyerTelephoneNumber { get; set; }
[DataMember]
public string BuyerEmailAddress { get; set; }
[DataMember]
public Nullable<int> QuotationBoxNumber { get; set; }
[DataMember]
public Nullable<int> FloorNumber { get; set; }
[DataMember]
public virtual ProcurementItemDto ProcurementItem { get; set; }
[DataMember]
public virtual ICollection<RfqGoodDto> RfqGoods { get; set; }
[DataMember]
public virtual ICollection<RfqServiceDto> RfqServices { get; set; }
}
【问题讨论】: