簡體   English   中英

WebApi OData內聯計數不起作用

[英]WebApi OData inlinecount not working

當我在uri $inlinecount=allpages傳遞給OData時,我試圖使OData返回數據庫中的實體數。 我已經在Stack Overflow中閱讀到,我應該返回IQueryable而不是IHttpActionResult ,但這並不能解決問題。 我也嘗試遵循asp.net網站上的教程,但是也沒有得到任何結果。

[EnableQuery(
        PageSize = BuildingConstants.BuildingsPerPage,
        MaxTop = BuildingConstants.MaxBuildingsPerPage,
        AllowedArithmeticOperators = AllowedArithmeticOperators.None,
        AllowedLogicalOperators = AllowedLogicalOperators.None,
        AllowedFunctions = AllowedFunctions.SubstringOf,
        AllowedQueryOptions = AllowedQueryOptions.Filter | AllowedQueryOptions.OrderBy | AllowedQueryOptions.Top | AllowedQueryOptions.Skip | AllowedQueryOptions.InlineCount)]
    [ResponseType(typeof(IEnumerable<ListedBuildingResponseModel>))]
    public IQueryable<ListedBuildingResponseModel> Get()
    {
        var buildings = this.buildings
            .GetBuildings()
            .ProjectTo<ListedBuildingResponseModel>();

        return buildings;
    }

這就是我寫的有關OData的所有內容。 控制器繼承ApiController而不是ODataController Register方法中,我沒有添加任何OData路由或模型構建器。 $top$skip$orderby以及其他所有東西都可以正常工作,但是$inlinecount=allpages 關於如何解決問題有什么建議嗎?

我通過添加以下代碼設法使count=true起作用:

 public static void Register(HttpConfiguration config)
    {
        config.MapODataServiceRoute("odata", "odata", model: GetEdmModel());
    }

    private static IEdmModel GetEdmModel()
    {
        var builder = new ODataConventionModelBuilder();
        builder.EntitySet<ListedBuildingResponseModel>("Buildings");

        builder.EnableLowerCamelCase();
        var edmModel = builder.GetEdmModel();
        return edmModel;
    }

現在一切正常,但是我不能在該類中使用其他操作,因為我得到406錯誤狀態代碼並且不知道為什么。 我不希望我的其他操作支持OData,因此我正在考慮可能的解決方案。 只為OData操作執行一個單獨的控制器是一種選擇,但是我也有一些家庭,支出和債務控制器,它們的Get方法要支持OData。 這意味着,我只需要使用1個Get方法就可以再創建4個控制器。 有沒有一種方法可以使用返回不同類型的方法GetBuildingsGetHouseholdsGetExpensesGetDebts創建單個SearchController 因為據我了解,這行代碼

uilder.EntitySet<ListedBuildingResponseModel>("Buildings");

以某種方式將BuildingsController “綁定”到ListedBuildingResponseModel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM