【问题标题】:Using OData Client Generator how to select which entities should have proxy classes generated?使用 OData 客户端生成器如何选择应该生成代理类的实体?
【发布时间】:2016-11-21 16:33:59
【问题描述】:

我已使用 this generator 成功生成 OData 客户端代码以访问我的 Dynamics CRM WebApi 服务。不幸的是,对于一个普通的组织,它生成了一个 ~30 MB 的 cs 文件。这是一种很大的方式,因为我只需要访问一些实体。

我知道我可以下载 OData 服务的元数据并在运行生成器之前手动编辑,但我正在寻找一种对开发人员更友好的方式。

我一直在寻找一种直接限制元数据的方法,但似乎 xml 元数据文件是静态的:Fetching $metadata for a specific collection or entity with Odata web services in Microsoft Dynamics NAV 2016

为某些实体生成代理类的最佳方法是什么?

编辑:我实际上尝试通过删除 EntityType 节点和相应的 EntitySets 来手动编辑元数据文件,但该工具抱怨某些接口 IEdm...所以仍未解决。

【问题讨论】:

  • 如果你说的是Svcutil,这里有人有解决方案erikpool.blogspot.co.uk/2011/03/…
  • @JamesWood 不,不是 CrmSvcUtil,我添加了一个链接到推荐用于 WebApi 服务的客户端代码生成器。
  • 您找到解决方案了吗?
  • @F.H.不,还没有时间研究它。目前我正在使用更简单的库访问 OData 服务(没有自动生成代理类,手动构建 url;仅帮助我解析响应)。

标签: odata dynamics-crm metadata t4 dynamics-crm-webapi


【解决方案1】:

我认为防止数据实体通过 ODATA 层暴露的推荐方法是在 Dynamics 365 中将实体上的“公共”属性设置为 false。

我遇到了完全相同的问题;在 VS 2012 中使用 OData 客户端生成器自动生成 TT 代理文件,这会导致 50Mb 类。这会导致 Visual Studio 在大多数情况下都非常不稳定地崩溃。

由于 D365 中有超过 2000 个实体,因此基本上不可能以这种方式将它们全部设置为私有,因为我们找不到选择多个实体并同时更新它们的方法。

如果有人有直接的 SQL 更新或其他方式来实现这一点,我也想听听。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2015-09-20
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多