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;

Als Ergebnis bekomme ich die Aufgaben, die in 2 Tagen fällig werden, probiere ich das im Entity Framework 1 erhalte ich folgendes Resultat:

Abbildung 1
Abbildung 1: Resultat der Abfrage in Entity Framework 1

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

Über jeden weiteren Kommentar in diesem Post benachrichtigen.

Zurück

Translate this page

Kategorien

  • [-].NET Development (215)
  • [-]Datenbank (26)
  • HTML (1)
  • Konfiguration (12)
  • Mind Map (10)
  • Off-topic (9)
  • Open Source (3)
  • Qualität (7)
  • Sharepoint (6)
  • Sicherheit (2)

Archiv

Social Bookmarking

Bookmark bei: Mr. Wong Bookmark bei: Webnews Bookmark bei: Icio Bookmark bei: Oneview Bookmark bei: Linkarena Bookmark bei: Favoriten Bookmark bei: Seekxl Bookmark bei: Favit Bookmark bei: Social Bookmarking Tool Bookmark bei: Power Oldie Bookmark bei: Bookmarks.cc Bookmark bei: Newskick Bookmark bei: Newsider Bookmark bei: Linksilo Bookmark bei: Readster Bookmark bei: Folkd Bookmark bei: Yigg Bookmark bei: Digg Bookmark bei: Del.icio.us Bookmark bei: Reddit Bookmark bei: Simpy Bookmark bei: StumbleUpon Bookmark bei: Slashdot Bookmark bei: Netscape Bookmark bei: Furl Bookmark bei: Yahoo Bookmark bei: Spurl Bookmark bei: Google Bookmark bei: Blinklist Bookmark bei: Blogmarks Bookmark bei: Diigo Bookmark bei: Technorati Bookmark bei: Newsvine Bookmark bei: Blinkbits Bookmark bei: Ma.Gnolia Bookmark bei: Smarking Bookmark bei: Netvouz Information