我目前正在结合 Dynamics AX 7 测试 oData 客户端。来自 AX 的元数据文件超过 900'000 行大,如果我使用默认的 oData 客户端并自动生成一个 C# 类文件,它不会因为太多而构建字符串文字(.net 错误)。
现在我正在寻找一种方法来告诉客户端生成器生成哪些类(例如通过实体名称)和哪些不生成(客户端不需要大约 95%)。
遗憾的是,限制 AX 端的元数据不是一种选择。
我目前正在结合 Dynamics AX 7 测试 oData 客户端。来自 AX 的元数据文件超过 900'000 行大,如果我使用默认的 oData 客户端并自动生成一个 C# 类文件,它不会因为太多而构建字符串文字(.net 错误)。
现在我正在寻找一种方法来告诉客户端生成器生成哪些类(例如通过实体名称)和哪些不生成(客户端不需要大约 95%)。
遗憾的是,限制 AX 端的元数据不是一种选择。
是的,使用 VS2015 将解决您的“字符串太多”错误,但是如果您在调试时打开生成的巨大文件或意外进入 oData 客户端文件,您仍然会遇到 Visual Studio 2015 崩溃的问题。
为了解决这个问题,我编辑了自动生成 oData 客户端类的 T4 模板,以便它们创建多个文件,因此您最终不会得到一个超过 100 万行的巨大文件。使用更新后的 T4 模板,它将生成相同的代码,但每 5MB 将拆分为一个新文件。
可在此处找到更新的 T4 模板: https ://github.com/batetech/D365FO-oData-T4-MultiFile-Templates
我们遇到了类似的问题,我们不得不修改$metadata
来自 ODATA 服务的可用信息。在我们的例子中,我们使用DataServiceContext
生成器并指向原始服务器 URI,但使用 Fiddler 作为中间的代理。通过在 Fiddler 中使用断点,我们可以将修改$metadata
后的 xml 提供给DataServiceContext
Visual Studio 中的生成器。如果您谨慎使用并且 API 稳定,则可以正常工作。