Ich verwende Web API + AbpOData + EF und muss einige Eigenschaften der Objekte aus der Datenbank auf dem Server berechnet berechnen.ABPOData + EF Modell mit benutzerdefinierten berechneten Eigenschaften
Der Grund Code sieht etwa so aus:
[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();
}
}
Ich bin nur Werte aus der Datenbank zurückkehrt, ist alles in Ordnung.
Was ich jedoch brauche, ist, zwei Datetime-Wert in lokale Zeit zu konvertieren. Wie unten
[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
});
}
}
ich unten Fehler immer
Die Einheit oder komplexer Typ ‚ActivityLogs‘ kann nicht in einer LINQ to Entities-Abfrage erstellt werden.
wie kann ich dies mit Hilfe von abp odata Framework (. NET Zero). Beachten Sie, dass wir dasselbe IQueryable zurückgeben müssen, das vom EF-Aufruf zurückgegeben wurde.
Vielen Dank für Ihre Antwort. Im Grunde möchte ich die Startzeit und die Endzeit in die Client-Ortszeit umwandeln (jede Client-Zeitzone, die in der Einstellungstabelle gespeichert ist). Basierend auf dem Kunden wird sich die Stunde ändern. also kann ich die erste Option nicht verwenden. Diese API wird in Power BI verwendet, sodass die zweite Option ebenfalls nicht funktioniert. –