Entity Framework 4 - Die Zeiten im Griff?
Mit Datumsfunktionen zu arbeiten ist in Linq to SQL keine Schwierigkeit. Im Entity Framework 1 sorgt der Versuch schon mal für graue Haare.
Also machen wir ein kleines Beispiel anhand einer fiktiven Geschäftsanforderung:
Ein Kunde möchte Aufgaben verwalten bzw. delegieren. Da in der Hektik des Daily-Business Aufgaben vergessen werden, soll für delegierte Aufgaben 2 Tage vor Fälligkeit eine Erinnerung gesendet werden.
In Linq to SQL kann ich dafür eine Linq-Abfrage nach folgendem Muster definieren:
C#
var result = from a in ctx.Task
where a.DueDate == DateTime.Today.AddDays(2)
select a;
Wirklich prima, wo man überall im EF1 anhängen kann. Als Workaround blieb hier nur das anlegen einer lokalen Variable und die Zuweisung in der Linq-Abfrage.
DateTime dateTimeTodayAddDays = DateTime.Today.AddDays(2);
var result = from a in context.Tasks
where a.DueDate == dateTimeTodayAddDays
select a;
Zugegeben in diesem Szenario stellt es noch kein grösseres Problem dar, bei komplexeren Abfragen mit Zeiten, in Kombination mit anderen Objekten, sind die Grenzen jedoch schnell erreicht.
Eine Grenze kann in diesem Fall schon die Anforderung sein, dass der Anwender selbst definieren will, wie viele Tage im voraus die Terminerinnerung für die Aufgabe ausgelöst werden soll.
In Linq to SQL kann diese Anforderung folgendermassen umgesetzt werden.
C# (Linq to SQL)
var result = from a in ctx.Task
where
a.DueDate == DateTime.Today.AddDays(a.ReminderSignal)
select a;
Für das Entity Framework 4 wurde die Providerunterstützung für Datum und Zeitfunktionen angekündigt und umgesetzt, wer jedoch dieses Szenario nachspielen will, wird trotzdem die NotSupportedException erhalten.
Bei der Planung der Architektur ist es deswegen empfehlenswert diese Einschränkung im Entity Framework 4 weiterhin zu berücksichtigen bzw. im Auge zu behalten.
- 0 Kommentar(e)



Mein Kommentar