2011-01-06 2 views
1

Obwohl ich einige .net o/rm Begriffe habe, bin ich verwirrt über drei Begriffe in EF4-Sprache: Trackable Entities, EntityObjects und POCOs.Was sind die Unterschiede und Gemeinsamkeiten von POCOs, Trackable Entities und EntityObjects

1) Können Sie ihre Unterschiede angeben?

2) Können Sie ihre Ähnlichkeiten angeben?

3) Wann sollten sie verwendet werden?

4) Wann sollten sie nicht verwendet werden?

5) Ist es möglich, Kombinationen von ihnen in einem Projekt zu mischen ?, (dh annehmen, dass Sie haben bereits eine Menge Code zu verwalten EntityObjects geschrieben, ist es leicht POCOs zu implementieren?)

Dank

Antwort

2

Lassen Sie mich versuchen:

  • EntityObject ist eine Basisklasse Entity Framework; Wenn Sie ein neues Entity Framework-Modell erstellen, ist dies die Klasse, von der alle Klassen, die Ihre Tabellen repräsentieren, standardmäßig übernommen werden. Es enthält die gesamte Logik und den Code, die für die gesamte EF-Magie benötigt werden.

  • POCO sind Plain Old CLR Objekte - einfach nur Objekte, die Sie haben, keine Abhängigkeit von EF, einfach nur Klassen

  • Aufspürbarer Entities sind im Grunde "POCOs auf stereoids" - POCO-Klassen, die zusätzliche haben Funktionalität ihren Zustand (unmodifiziert, modifiziert usw.) zu verfolgen, so dass sie sich über mehrere Ebenen (und zurück) und werden verwendet, fast wie normale EntityObjects am Ende

die am einfachsten zu bedienen sind Ent gesendet werden Nachfahren von ityObject - Sie benutzen sie einfach, alles großartig und funktioniert. Allerdings: Wenn Sie dies tun, binden Sie sich eng an Entity Framework, und das kann ein Architekturproblem sein.

Nur POCOs zu verwenden ist das "reinste" - Sie haben es nur mit einfachen Klassen zu tun, und EF macht all seine Magie "hinter den Kulissen" - aber es erfordert ein wenig zusätzlichen Code und Aufwand, damit dies funktioniert .

Trackable (oder Self-Tracking) Entitäten scheint wie ein großer Kompromiss zwischen den beiden, aber ich hatte nicht genügend Exposition zu allen Mechanik und Innenleben, noch in der Lage sein, irgendeine vernünftige Empfehlung zu geben.

Deshalb würde ich empfehlen:

  • Start mit regulären Modell Entity Framework Daten, die visuellen Designer und alle, und EntityObject Nachkommen verwenden und erhalten nur in EF verwenden und wie es funktioniert

  • wenn fühlen Sie die Notwendigkeit, erforschen POCO oder STE (Selbst Tracking-Einheiten) im Detail, wenn Sie ein grundlegendes Verständnis von EF haben

+0

+1, das ist eine große Antwort. Sehr ähnlich zu dem, was ich über die Antwort dachte. – RPM1984

+1

Sind POCOs und EntityObjects beide durch einen ObjectContext? Handhabbar ?. Angenommen, ich bin in einer Business-Schicht, die POCOs manipuliert: Was muss ich für Änderungen beibehalten, die an POCOs vorgenommen wurden? muss ich sie in EntityObjects in DAL transformieren und ihre Änderungen beibehalten? – JPCF

0

Hier einige ADDI Informationen zu den Unterschieden zwischen EntityObject, Trackable Entities und POCOs.

1) EntityObject ist eine Entitätsbasisklasse, die für ältere EF-Apps verwendet wird. Sie sollten es um jeden Preis vermeiden, da es Ihre Entitäten eng an EF koppelt, was eine schlechte Sache ist. Und mit der Unterstützung von EF POCO ist dies völlig unnötig, weil EF viele der gleichen Funktionen ohne die Basisklasse bietet.

2) POCO-Klassen kennen Persistenzprobleme nicht. Sie müssen nicht von einer Basisklasse abgeleitet sein oder spezielle Attribute haben. Sie bieten Unabhängigkeit von der Datenzugriffs-API wie EF.

3) Trackable Entities sind ein Typ von POCO-Klassen, die eine oder zwei zusätzliche Eigenschaften zum Festlegen des Entitätsstatus haben: Unverändert, Hinzugefügt, Geändert, Gelöscht. Während diese Eigenschaften im Allgemeinen zur Persistenz gehören, tun sie nicht Koppeln von Entitäten zu einem bestimmten Persistenz-Framework, einschließlich Trackable Entities. Stattdessen ermöglichen sie einem Persistenz-Framework am Backend, diese Eigenschaften zu interpretieren und anzuwenden, die extrem leicht und Framework-unabhängig sind. Der Hauptvorteil von Trackable Entities, der ein Ersatz für Microsofts jetzt nicht mehr existierendes Self-Tracking Entities ist, besteht darin, dass Sie Änderungen an einem Diagramm verwandter Objekte in einer Transaktion mit einem einzigen Umlauf zu einem WCF- oder Web-API-Dienst beibehalten können . Wenn Sie beispielsweise eine Bestellung mit mehreren Details haben, von denen einige hinzugefügt, geändert oder gelöscht wurden, können die Bestellung und die Details in einer Aufnahme gesendet werden, und alle Aktualisierungen erfolgen automatisch.

Trackable Entities hat auch andere Vorteile, insbesondere in Bezug auf die Produktivität. Es ist als eine Reihe von NuGet-Paketen und Visual Studio extensions (2012, 2013) implementiert, mit denen Sie eine N-Tier-Lösung in einem Bruchteil der Zeit zusammenstellen können.

Cheers, Tony

Verwandte Themen