OData动态模板类

本文关键字:动态 OData | 更新日期: 2023-09-27 18:05:44

我正在使用OData V3,我遇到了这一行:

var people = await client.For<People>().FindEntriesAsync();

为了让它工作,我需要定义People类,它有一堆set/get,代表我想要的字段。

是否有一种简单方便的方法来避免硬编码结构类?我希望能够发出该命令,而不必定义特定的"People"类。我更希望我的结果是字典形式的,键是列名,值是该列中特定对象的值。

OData动态模板类

Simple.OData。客户端支持无类型场景,在这种场景中不需要CLR类。

例如:

var people = await client.For("People").FindEntriesAsync();

那么,people是一个字典实例,您可以使用IDictionary<string, object>来引用它。谢谢。

我认为没有办法避免定义像People这样的类,但如果你真的想这样做,你可以尝试OData中的非类型化特性。

Simple.OData。客户端支持类型化、非类型化和动态场景。所以你可以这样重写你的查询:

var x = ODataDynamic.Expression;
var people = await client.For(x.People).FindEntriesAsync();

下面是另一个例子:

var person = await client
    .For(x.People)
    .Filter(x.FirstName == "John")
    .Select(x.LastName)
    .FindEntryAsync();