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
+1, das ist eine große Antwort. Sehr ähnlich zu dem, was ich über die Antwort dachte. – RPM1984
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