gpt4 book ai didi

asp.net-web-api - 如何在 .ashx 上手动创建 ODataQueryOptions

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

我想重建我的上一个项目。过去,我没有使用任何 Web API。我可以使用 ODataQueryOptions 来执行 $filter、$orderby 、$top 、$skip 操作吗对于我自己的 handler.ashx 中的查询?诸如此类的东西。

var option = new ODataQueryOptions(request.params);
var query = option.ApplyTo(db.products);

最佳答案

根据上面 sfuqua 的回答,我制作了自己的帮助程序类,该类基于 Odata Uri 构建 OdataQueryOptions 类:

using System.Linq;
using System.Net.Http;
using System.Web.Http.OData;
using System.Web.Http.OData.Builder;
using System.Web.Http.OData.Query;

namespace OdataHelpers
{
public static class ODataBuilder<T>
{
public static ODataQueryOptions<T> BuildOptions(string oDataUri)
{
var baseUri = "";
var odUri = "";
var spl = oDataUri.Split('?');
if (spl.Count() == 0)
odUri = spl[0];
else
{
baseUri = spl[0];
odUri = spl[1];
}
if (string.IsNullOrEmpty(baseUri))
baseUri = "http://localhost/api/" + typeof(T).Name;
var request = new HttpRequestMessage(HttpMethod.Get, baseUri + "?" + oDataUri.Replace("?", ""));
var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.AddEntity(typeof(T));
var edmModel = modelBuilder.GetEdmModel();
var oDataQueryContext = new ODataQueryContext(edmModel, typeof(T));
return new ODataQueryOptions<T>(oDataQueryContext, request);
}
}
}

使用示例:

var OdataStuff = ODataBuilder<CustomerIntView>.BuildOptions("$orderby=Id");

关于asp.net-web-api - 如何在 .ashx 上手动创建 ODataQueryOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28393897/

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