【问题标题】:Extracting classes from ODataV4 Metadata XML in .NET-core从 .NET-core 中的 ODataV4 元数据 XML 中提取类
【发布时间】:2018-12-05 21:17:37
【问题描述】:

我从 Microsoft Dynamics 365 下载了文件 ODataV4Metadata.xml。该文件包含许多描述类的 EntityType 标记。作为参考,它(部分)是这样的:

<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Microsoft.Dynamics.CRM" Alias="mscrm">
            <EntityType Name="crmbaseentity" Abstract="true" />
            <EntityType Name="accountleads" BaseType="mscrm.crmbaseentity">
                <Key>
                    <PropertyRef Name="accountleadid" />
                </Key>
                <Property Name="accountleadid" Type="Edm.Guid" />
                <Property Name="overriddencreatedon" Type="Edm.DateTimeOffset" />
                <Property Name="timezoneruleversionnumber" Type="Edm.Int32" />
                <Property Name="importsequencenumber" Type="Edm.Int32" />
...etc

例如,这应该生成一个名为Accountleads 的类,其属性类似于

[DataMember(Name = "overriddencreatedon")]
        public System.DateTimeOffset? Overriddencreatedon
        {
            get
            {
                return this._Overriddencreatedon;
            }
            set
            {
                this._Overriddencreatedon = value;
            }
         }

当我在 .NET-core 中工作时,这似乎是不可能的。我能够生成一个包含大量 cmets 的所有 EntityTypes 的巨大(100k 行代码)文件。但是,似乎我无法在 .NET-core 中执行此操作,尽管我能够使用生成的类。 第二个问题是,它只生成一个文件,其中包含所有类(并且它没有预先使用 using 关键字包含所有命名空间)

是否有任何工具具有更大的灵活性,可以在 .NET-core 中工作并在单独的文件中生成类?谷歌搜索它在 ASP.NET 和 .NET v4 中提供了许多解决方案。

如有必要,我将制作一个开源工具来执行此操作,但可能我还没有研究足够多的地方。


我检查的来源:

【问题讨论】:

    标签: c# .net-core odata dynamics-crm


    【解决方案1】:

    用于创建早期绑定代理类的开箱即用工具是CrmSvcUtil

    Daryl LaBar 为 XrmToolbox 编写了 Early Bound Generator,我相信它利用了 CrmSvcUtil。

    有一个名为XrmToolkit 的 D365 商业 VS 附加组件,其中包括创建代理类的能力(使用专有算法,因此它们与 CrmSvcUtil 生成的类不同)。这是我使用的工具,它确实将每个类创建为一个单独的文件。

    顺便说一句,Jason Lattimer 的 D365 Developer Extensions 有很多有用的功能,但我不相信它有内置的代理类生成。

    【讨论】:

    • 您的回答很有帮助,希望对其他人也有帮助
    猜你喜欢
    • 2021-12-05
    • 2015-06-12
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多