Die CeBIT ist vorbei und nun kann mich wieder Fragen widmen die mir im Laufe der letzten Wochen gestellt wurden. Ein besonders heiß diskutiertes Thema ist das ADO.NET Entity Framework. Viele Leute meinen, weil es nun von uns einen OR-Mapper gibt, das man diesen unbedingt auf Teufel komm raus einsetzen muss. Ich verrate jetzt mal ein kleines Geheimnis: Man muss nicht. Nein, man muss wirklich nicht. Man kann, aber wie gesagt, ich wiederhole mich ungern, man muss nicht.

Ich finde es erstaunlich das komplette Datenzugriffsstrategien im laufenden Projekt über Bord geworfen werden, weil es nun eine neue Zugriffsmöglichkeit gibt. Was ist denn so verkehrt an dem IDataReader? Was ist so schlecht an DataTable? Was ist nicht ok mit den existierenden OR-Mappern? Warum die Abneigung bezüglich LINQ to SQL? Das ADO.NET Entity Framework ist mit Sicherheit eine Zukunftsinvestition, aber die anderen Zugriffstechnologien bieten auch im entsprechenden Umfeld viele Vorteile.

Ich persönlich würde jedem Raten, bevor er sich blind auf eine neue Technologie stürtzt und in seinem Projekt damit die strategische Ausrichtung schlagartig ändert, vielleicht einmal einfach ein paar Tests mit der neuen Technologie durchzuführen. Schliesslich soll man ja Vorteile mitnehmen und nicht nur einfach Blindlings der Masse folgen. Das fängt mit der Frage an ob ein ORM Tool überhaupt in meinem bestehenden Modellierungsansatz passt. Schreibe ich zuerst das Domänen Modell und möchte mich nur sekundär um die Persistierung kümmern, dann ist ein OR Tool gut. Ist mein Ansatz, aus welchen Gründen auch immer, anders, sprich, ich arbeite vom Datenmodell nach oben, so mag ein OR Tool auch hilfreich sein, jedoch wird die Datenzugriffsschicht primär sehr stark orientiert an dem Mapping der Tabellen orientiert sein, hier können DataSets und DataTables immer noch gute Dienste leisten, zumal diese noch andere Vorteile bei verteilten Anwendungsszenarien bieten.

Des Weiteren ist stark vom Szenario abhängig ob die Performance gewissen Kriterien entsprechen muss. Dazu würde ich jedem einfach mal Raten sich die möglichen in Frage kommenden Zugriffstechniken in einem kleinen Testlauf miteinander zu messen und zu vergleichen. Und hierbei auch neben der Zugriffsgeschwindigkeit, zusätzlich generierte SQL Statements anzuschauen und auch den Speicherverbrauch zu beobachten. Noch eine wichtige Frage die sich viele Leute stellen sollten ist ob ich wirklich in meiner Anwendung Daten löschen muss. Grundsätzlich wird immer gesagt, “Daten löschen ist wichtig!”. Doch dann stellt sich raus das im Anwendungsfall aus der Praxis diese Daten lediglich als gelöscht markiert werden. Es erleichtert vieles wenn man diese Daten lediglich als gelöscht markiert.

Wenn man diese verschiedenen Faktoren getestet und analysiert hat, immer mit dem Bezug auf die Gesamtlösung und der Gesamtarchitektur, erst dann sollte man die Entscheidung treffen welches Zugriffsmodell man letztendlich nimmt. Und wenn die Entscheidung heisst IDataReader mit eigenem Mapping, dann soll es so sein.