2

在我的项目中,我使用的是 OData v3 和 v4(背面带有实体框架的 ASP.NET Web API)。目前我使用 Visual Studio 工具构建了一个客户端。

但是还有其他方法吗?我真的必须基于 $metadata 和工具集构建客户端吗?

是否可以通过共享库共享我的模型(合同)并构建这样的客户端:

var client = new ODataClient<MySharedModel>(uri);
MySharedModel.Product product = 
  client.Products.Where(p => p.Category.Name == "Vegetables").FirstOrDefault();

该模型可以是一组我自己的 DTO 对象,我可以将其映射到等效的实体框架对象。

我的目标是,共享一个文档齐全的模型(源代码 XML 文档)以及附加逻辑,例如ToString实现和附加属性。此外,我节省了一个额外的步骤:生成客户端(当您在 TFS 构建服务器上自动构建和发布所有包时,这很糟糕)。

这对 OData v3 或 OData v4 可行吗?

4

1 回答 1

1

OData 最近开始复苏,团队定期发布OData 连接服务实体生成器的新更新,因此您可能需要考虑再试一次。
您绝对可以重用相同的模型,但是您会丢失为您生成的特定于客户端的功能,例如,具有所有实体集作为属性的专用容器,集合属性公开为ObservableCollection<T>,以及自我跟踪实体,以及其他人。

所有类都生成为partial classes,因此您始终可以通过将方法添加到您自己的部分来扩展它们,就此而言,这些部分也可以是共享类。

关于文档,目前尚不支持,但已建议并似乎考虑将其用于未来的开发。

无论如何,这绝对是可能的,并且不应该很难使用您自己的实体。
要了解如何使用您的客户端 POCO 促进 OData 客户端访问,我建议您生成一次模型并将代码保留在您的项目之外或作为排除文件,仅供参考,以便您可以模仿适合您的类似功能。那是对我最有帮助的方法。

此外,您将受益于查看文档API 参考文档,这些文档最近有所更新。

于 2020-03-31T16:03:44.173 回答