Ich habe eine Methode, die eine Liste von anonymen Objekten mit einer berechneten Spalte wie diese zurückgeben sollte:Mit DatDiff in Entity Framework auf einer SQL CE-Datenbank
var tomorrow = DateTime.Today.AddDays(1);
return from t in this.Events
where (t.StartTime >= DateTime.Today && t.StartTime < tomorrow && t.EndTime.HasValue)
select new
{
Client = t.Activity.Project.Customer.Name,
Project = t.Activity.Project.Name,
Task = t.Activity.Task.Name,
Rate = t.Activity.Rate.Name,
StartTime = t.StartTime,
EndTime = t.EndTime.Value,
Hours = (System.Data.Objects.SqlClient.SqlFunctions.DateDiff("m", t.StartTime, t.EndTime.Value)/60),
Description = t.Activity.Description
};
Leider bekomme ich folgende Fehler von der Funktion DateDiff:
die angegebene Methode 'System.Nullable 1[System.Int32] DateDiff(System.String, System.Nullable
1 [System.DateTime], System.Nullable`1 [System.DateTime])' von der Art 'System.Data.Objects.SqlClient.SqlFunctions' kann nicht in übersetzt Ein LINQ to Entities speichert den Ausdruck.
Irgendwelche Ideen, was ich hier falsch gemacht haben könnte?
EDIT: Ich habe auch versucht, die EntityFunctions-Klasse erwähnt here, aber das hat nicht so gut funktioniert.
Minutes = EntityFunctions.DiffMinutes(t.EndTime, t.StartTime),
Haben Sie getestet das? – Omar
Das ist, womit ich angefangen habe, und es konnte nicht übersetzt werden. Also suchte ich und der empfohlene Ansatz war, SqlFunctions zu verwenden. –
Mit diesem Code bekomme ich die Ausnahme: ** DbArithmeticExpression Argumente müssen einen numerischen gemeinsamen Typ haben. ** –