0

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.

Antwort

0

Der Fehler wird durch die Unmöglichkeit verursacht, die AddHours-Methode in SQL zu konvertieren.

Sie haben 2 Möglichkeiten:

  • einen Blick in DB anlegen, wo Sie Ihre zusätzliche Logik halten.
  • Fügen Sie Ihr Unternehmen für DateTime-Eigenschaften auf Ihrer Clientseite hinzu.
+0

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. –

Verwandte Themen