odata跳过和最重要的问题

时间:2019-02-22 14:30:19

标签: odata aspnetboilerplate

我已经根据文档实现了Abp.OData。 例如

http://localhost:21021/odata/regions?$count=true可以正常工作。它返回;

{"result":[{"id":1,"name":"Gebze"},{"id":2,"name":"Ankara"},{"id":3,"name":"Bursa"}],"targetUrl":null,"success":true,"error":null,"unAuthorizedRequest":false,"__abp":true}

但是http://localhost:21021/odata/regions吗?$ count = true&$ skip = 0&$ top = 12不起作用。

返回;

{"result":null,"targetUrl":null,"success":false,"error":{"code":0,"message":"Sayfa işlenirken sunucu tarafında beklenmedik bir hata oluştu!","details":null,"validationErrors":null},"unAuthorizedRequest":false,"__abp":true}

我的启动文件是:


我的oData控制器是:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Abp.AspNetCore.OData.Controllers;
using Abp.Dependency;
using Abp.Domain.Repositories;
using Microsoft.AspNet.OData;
using TSE.Merkez.KalIsteks;

namespace TSE.Merkez.Web.Host.Controllers
{
    [EnableQuery]
    public class RegionsController : AbpODataEntityController<Region.Region>, ITransientDependency
    {
        public RegionsController(IRepository<Region.Region> repository) : base(repository)
        {
        }
        //[EnableQuery]
        //public override IQueryable<Region.Region> Get()
        //{

        //    return base.Get();
        //}
    }
}

我收到以下错误消息

  

错误2019-02-25 12:10:21,218 [10]   Mvc.ExceptionHandling.AbpExceptionFilter-未调用完成   工作单元的方法。 Abp.AbpException:未调用完成   工作单元的方法。在   Abp.Domain.Uow.InnerUnitOfWorkCompleteHandle.Dispose()在   Abp.AspNetCore.Mvc.Uow.AbpUowActionFilter.d__4.MoveNext()---结束   从上一个引发异常的位置开始的堆栈跟踪-   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)在System.Runtime.CompilerServices.TaskAwaiter.GetResult()在   Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__10.MoveNext()   ---从上一个引发异常的位置开始的堆栈跟踪-   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在   Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext   上下文)   Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State&   接下来,范围和作用域,对象和状态,布尔值和isCompleted)位于   Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__13.MoveNext()   ---从上一个引发异常的位置开始的堆栈跟踪-   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务),位于System.Runtime.CompilerServices.TaskAwaiter.GetResult()

你有什么主意吗?我哪里出错了?在此先感谢。

1 个答案:

答案 0 :(得分:0)

好的。问题解决了。这是因为没有正确地构造实体。我强迫ABP用旧表中的额外Id属性构造实体。但是,为ABP框架保留的实体中的ID列。我不应该强迫框架使用我的旧ID属性。我已经将旧的ID数据转移到了实体的另一列中,问题已解决。问候。