具有自定义计算属性的 ABPOData + EF 模型



我正在使用Web API + AbpOData + EF,需要计算从服务器上的数据库返回的对象的一些属性。

基本代码如下所示:

[AbpApiAuthorize(AppPermissions.OData_Permission_Consume)]
public class ActivityLogsController : AbpODataEntityController<ActivityLogs>
{
[EnableQuery(PageSize = 50000)]
public override IQueryable<ActivityLogs> Get()
{
var objectContext = new MyObjectContext(); //EF
return objectContext.ActivityLogs.GetAll();
}
}

我只是从数据库中返回值,一切都很好。

但是我需要的是将两个日期时间值转换为本地时间。像下面一样

[AbpApiAuthorize(AppPermissions.OData_Permission_Consume)]
public class ActivityLogsController : AbpODataEntityController<ActivityLogs>
{
[EnableQuery(PageSize = 50000)]
public override IQueryable<ActivityLogs> Get()
{
var objectContext = new MyObjectContext(); //EF
return objectContext.ActivityLogs.Select(d => new ActivityLogs()
{
Id = d.ID,
Activity = d.Activity,
StartTime = d.StartTime.Value.AddHours(5),
EndTime = d.EndTime.Value.AddHours(5),
Duration = d.Duration
});
}
}

我得到以下错误

实体或复杂类型"活动日志"不能在 LINQ to 实体查询中构造。

我如何使用ABP OData框架(.NET Zero(暗示这一点。 请记住,我们需要返回从 EF 调用返回的相同 IQueryable。

该错误是由于无法将 AddHours 方法转换为 SQL 引起的。

您有 2 个选项:

  • 在数据库中创建一个视图,您将在其中保存其他逻辑。
  • 在客户端为日期时间属性添加您的业务。

最新更新