OData动态模板类
本文关键字:动态 OData | 更新日期: 2023-09-27 18:05:44
我正在使用OData V3,我遇到了这一行:
var people = await client.For<People>().FindEntriesAsync();
为了让它工作,我需要定义People
类,它有一堆set/get,代表我想要的字段。
是否有一种简单方便的方法来避免硬编码结构类?我希望能够发出该命令,而不必定义特定的"People"类。我更希望我的结果是字典形式的,键是列名,值是该列中特定对象的值。
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();