繁体   English   中英

从C#类生成Xml模式

[英]Generate Xml schema from c# classes

我需要创建一个网络服务,该服务将在我的组织内集成来自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.ICollection 1[[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]]', 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]]的1[[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接口。

我认为我需要的是这些类及其每个parameters的正确xml attributes ,但是我不知道我需要添加哪些属性才能使此工作正常进行并且还无法找出。 下面是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; }
}

尝试将您的ICollection<T>成员更改为List<T> 您得到的错误基本上是在告诉您无法序列化接口。

您可以使用EntityFrameWork进行相同的操作。您必须向应用程序中添加一个.edmx文件,然后必须配置数据库,然后在Model中找到数据库的架构

更多信息,您可以参考链接EF

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM