Entity Framework 4 – Die Zeiten im Griff mit SqlFunctions

Letztes Jahr hatte ich mich in diesen Beitrag mit den Zeitfunktionen im Entity Framework auseinandergesetzt. Das Hauptproblem war die Verwendung von DateTime-Methoden in Kombination mit Linq-Abfragen. In Linq to SQL funktioniert das problemlos, während das Entity Framework eine NotSupportedException auslöst. Das Problem ist hier einmal mehr die Erwartungskonfirmintät, man kommt also nicht um das lesen der Dokumentation herum.

Für das beschriebene Szenario ist im Entity Framework die Klasse SqlFunctions aus dem Namensraum System.Data.Objects.SqlClient gedacht.

Ein kleines Beispiel, wie die Abfrage im Entity Framework aussieht:


var list = from t in ctx.Tasks
                 where t.DueDate == SqlFunctions.DateAdd("d", t.ReminderSignal, DateTime.Today)
                 select t;
Beispiel mit SqlFunctions (C#)

Für mich ist diese Form der Verwendung immer noch gewöhnungsbedürftig, aber es ist ein Weg die Datumsfunktionen innerhalb der Abfragen verwenden zu können.

Ein gravierender Nachteil bei der Verwendung von SqlFunctions ist die Abhängigkeit zum Provider, da die Funktionen auf den Sql Server ausgelegt sind. Wird die gleiche Abfrage bspw. gegen einen MySQL-Server gerichtet (MySQLConnector 6.3.6), so erhält man folgende Fehlermeldung:

Die angegebene Methode 'System.Nullable`1[System.DateTime] DateAdd(System.String, System.Nullable`1[System.Double], System.Nullable`1[System.DateTime])' in Typ 'System.Data.Objects.SqlClient.SqlFunctions' kann nicht in einen Speicherausdruck für 'LINQ to Entities' übersetzt werden.

Eigentlich schade...

  •  
  • 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