我需要创建一个Web服务,该服务将在我的组织内集成SAP的信息。我有一个具有数据库结构的现有应用程序。 SAP将使用Web服务将值存储到数据库中的相关表/列中。
为此,我需要为SAP团队提供将用于传递数据的Xml架构。现在,我对xml知之甚少。我所做的是基于所有相关表的Entity Framework类创建了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.ICollection
1 [[RfqService.DataTransferObjects.RfqGoodDto,RfqService,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]因为它是一个接口。
我认为我需要的是类及其attributes
的正确xml 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; }
}
答案 0 :(得分:1)
尝试将ICollection<T>
成员更改为List<T>
。你得到的错误基本上告诉你,你不能序列化接口。
答案 1 :(得分:0)
您可以使用EntityFrameWork
执行此操作。您必须将一个.edmx
文件添加到您的应用程序中,然后您必须配置数据库,在模型中您将找到数据库的模式
更多信息,您可以参考链接EF