我已经根据文档实现了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()
你有什么主意吗?我哪里出错了?在此先感谢。
答案 0 :(得分:0)
好的。问题解决了。这是因为没有正确地构造实体。我强迫ABP用旧表中的额外Id属性构造实体。但是,为ABP框架保留的实体中的ID列。我不应该强迫框架使用我的旧ID属性。我已经将旧的ID数据转移到了实体的另一列中,问题已解决。问候。