Die EF oder ein anderes ORM (d. H. NHibernate) ersetzt nicht Ihre Datenzugriffsebene. Vielmehr ist das ORM eine Abstraktionsschicht von der DAL zur Datenquelle.
Lassen Sie sich nicht täuschen, dass Sie glauben, dass der EF die DAL überflüssig macht. Die EF ist nur ein weiteres Datenquellen-Framework. In der bewährten Vorgehensweise möchten Sie jedoch den gesamten Zugriff (Lesen/Schreiben) in einer gemeinsamen DAL abstrahieren und zentralisieren.
Hier ist ein perfektes Beispiel für das, was ich rede. Angenommen, Sie müssen einen bestimmten Benutzer in einem Ihrer Anwendungsfälle löschen. Beim Löschen des Benutzers möchten Sie jedoch möglicherweise andere Datensätze löschen, die mit dem gelöschten Benutzer verknüpft sind, um verwaiste Datensätze zu vermeiden (um ehrlich zu sein, würde ich dafür einen gespeicherten proc verwenden). Nun steckt dieser Anwendungsfall in einer BO, die für diesen Anwendungsfall sehr spezifisch ist, und das Löschen als Benutzer ist nur ein Teil des gesamten Anwendungsfalls.
Zu einem bestimmten Zeitpunkt haben Sie einen Entwickler, der aufgefordert wird, einen anderen Anwendungsfall einzubinden, der dazu führte, dass ein Benutzer gelöscht wurde! Der Entwickler kann ein paar Dinge tun. 1) Er könnte einen neuen Anwendungsfall erstellen, bei dem jetzt ein Benutzer gelöscht wird, aber vergessen wurde, alle zugehörigen Datensätze für diesen Benutzer zu löschen. 2) Möglicherweise hat er den vorherigen Anwendungsfall bemerkt, konnte ihn jedoch nicht direkt verwenden, ohne ihn für seinen Anwendungsfall zu verallgemeinern. Daher entschied er sich, einen Teil dieses Anwendungsfalls zu kopieren, der einen Benutzer und die zugehörigen Datensätze ordnungsgemäß löscht . Jetzt haben wir Teile des Codes, die praktisch die gleiche Sache tun - einen Benutzer löschen. Yuk! Nun habe ich diesen "Benutzer löschen" in ein DAL gesetzt.Benutzer-Helper-Klasse, vermeiden Sie diese schlechte Design-Praxis.
Wie auch immer, das eine nette Ding über die EF, es reduziert die Anzahl der Business Entities, die ich manuell erstellt habe und bietet eine andere Ansicht der Daten von einer Anwendungsebene als das, was in der Data-Store-Ebene gesehen wird.
Stackoverflow's DAL: http://blog.stackoverflow.com/2008/09/was-was-stack-overflow-built-with/ –