c# - 如何在 .NET 中使用 OData 客户端处理未知类方案
问题描述
我正在 .NET Core 中构建一个应用程序,它连接到许多外部 OData 提供程序(Microsoft Dynamics Business Central 实例)。我们已经为 Business Central 建立了一个框架,当从一个数据源连接到另一个数据源时,该框架不会改变。为此,我使用 OData Connected Service 生成了一个代理,并勾选了所有不会更改的必需数据实体。它很好地生成了它们的 .NET 对象。
我的问题是,您对处理设计时未知类有什么建议?我必须使用自己的 DTO 将值转发到 HTTP Rest API。我可以以某种方式Dictionary
从属性中获得 a 吗?有可能Microsoft.OData.Client.DataServiceContext
吗?
来自数据源的示例:
DataSource 1
Entity - Foo
Property - AwesomeProperty : int
DataSource 2
Entity - Foo
Property - AnotherAwesomeProperty : string
Property - AwesomeProperty : string
DataSource 3
Entity - Bar
Property - AFooBarProperty : decimal
查询的预期结果:
// Query DataSource 1
Dictionary<string, object>()
{
Key: "AwesomeProperty" , Value : 15
}
// Query DataSource 2
Dictionary<string, object>()
{
Key: "AnotherAwesomeProperty" , Value : "StackOverflow rocks!"
Key: "AwesomeProperty" , Value : "In this datasource, I am a string!"
}
// Query DataSource 3
Dictionary<string, object>()
{
Key: "AFooBarProperty" , Value : 3.147
}
解决方案
简单的回答:你不能用那个库来做到这一点。我所知道的。
但是,您可以SimpleODataClient
改用它,它也支持未知模式。它在进行查询时解析元数据,并Dictionary<string,object>
根据 $metadata 返回具有正确映射的对象类型(int、string 等)的 a。
如果 $metadata 仍然可以更改,我建议您使用 HTTPClient,并实现自己的服务。
推荐阅读
- record - Coq 中的记录子类型,请求的问题和参考资料
- python-3.x - selenium - python - 通过内部 HTML 查找元素
- python - 使用 SQLAlchemy 将 Flask WTForms 转换为 css 表单
- json - 从 json 文件中获取 pandas 数据框
- google-apps-script - 如何修复 https://docs.google.com 的请求失败返回代码 404
- python-3.x - 使用 Python 删除 MYSQL 中的行错误
- azure-log-analytics - Kusto 查询中的案例语句
- sqlite - dotnet SqlConnection InMemory 支持
- excel - Excel Sumproduct 忽略文本问题
- python - Python websocket:导入错误,无法在docker中导入'create_connection'