【问题标题】:Generate Xml schema from c# classes从 c# 类生成 Xml 架构
【发布时间】: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; }
}

【问题讨论】:

    标签: c# xml xsd xsd.exe


    【解决方案1】:

    尝试将您的ICollection&lt;T&gt; 成员更改为List&lt;T&gt;。你得到的错误基本上是告诉你不能序列化接口。

    【讨论】:

      【解决方案2】:

      您可以使用EntityFrameWork 做同样的事情。您必须将一个.edmx 文件添加到您的应用程序中,然后您必须配置数据库,在模型中您将找到数据库的架构

      更多信息可以参考链接EF

      【讨论】:

      • 是的,我有一个带有数据库架构的 .edmx。但是,我想要的是一个xml 架构文件,.xsd
      猜你喜欢
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2010-12-15
      • 1970-01-01
      相关资源
      最近更新 更多