在.NET-core中从ODataV4元数据XML提取类

时间:2018-12-04 20:27:24

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

我从Microsoft Dynamics 365下载了文件John。此文件包含许多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

当我在.NET内核中工作时,这似乎是不可能的。我能够生成包含所有注释的所有[DataMember(Name = "overriddencreatedon")] public System.DateTimeOffset? Overriddencreatedon { get { return this._Overriddencreatedon; } set { this._Overriddencreatedon = value; } } 组成的巨大文件(10万行代码)。但是,尽管我能够使用生成的类,但似乎无法在.NET-core中执行此操作。 第二个问题是,它只生成一个文件,其中包含所有类(并且它没有使用EntityTypes关键字预先包含所有名称空间)

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

如有必要,我将制作一个开放源代码工具来执行此操作,但是也许我没有看足够的地方。


我检查的来源:

1 个答案:

答案 0 :(得分:1)

用于创建早期绑定代理类的现成工具为CrmSvcUtil

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

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

作为旁注,Jason Lattimer的D365 Developer Extensions具有许多有用的功能,但是我不相信它具有内置的代理类生成。