gpt4 book ai didi

.net - 在 web api 中使用 odata 函数 isof

转载 作者:行者123 更新时间:2023-12-02 02:00:47 25 4
gpt4 key购买 nike

我正在将 OData 与 web api 一起使用,并尝试根据类型细节进行查询。我想要的是提供一个看起来像这样的查询(其中粗体文本在语法上不正确,但描述了我在断言类型后要做的事情):

../Supplier?$filter=isof(Product, namespace.ToyProduct) &Product.ratedAge eq 5

但是,当我尝试使用 [Queryable] 属性执行此操作并从 ODataController 继承时,我得到了 方法不支持错误 关于isof。有没有办法让方法得到支持?我曾尝试将 AllowedFunctions.All 添加到 Queryable 属性,但这不起作用。

我可以使用 ODataQueryOptions 来检查过滤器中是否包含 isof 并使用我自己的方法来检查,但是它相当困惑,并且在允许额外过滤后可能会变得更糟,如果存在更好的解决方案那将是很棒的!

目前未编译的代码:

public class SupplierController : ODataController {
[Queryable(AllowedFunctions = AllowedFunctions.All)]
public PageResult<Supplier> Get(ODataQueryOptions<Supplier> queryOptions) {

// doesn't work, method not supported
//var queryableSuppliers = queryOptions.ApplyTo(_repository.All());

// works but messy method.
var queryableSuppliers = MyIsOfMethod(queryOptions.Filter)

return new PageResult<ObjectType>(
results as IEnumerable<ObjectType>,
Request.GetNextPageLink(),
Request.GetInlineCount());

}
}

最佳答案

我们不支持 web api 中的 isof 和 cast 函数。相反,我们使用单独的段来支持新的强制转换语法。使用新语法,您的查询将如下所示,
../Supplier?$filter=Product/namespace.ToyProduct/ratedAge eq 5

关于.net - 在 web api 中使用 odata 函数 isof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com