Warum ist die "Korrektur" erforderlich für die Persistenz Unwissend POCO in EF 4?

Einer der viel erwartete features von Entity Framework 4 ist die Möglichkeit zum verwenden von POCO (Plain Old CLR Objects) in einer Persistenz Ignoranten Art und Weise (d.h. Sie "wissen" nicht, dass Sie beibehalten wird, mit Entity Framework vs. einen anderen Mechanismus).

Ich versuche, wickeln Sie meinen Kopf herum, warum es notwendig ist, durchführen association Korrekturen und verwenden FixupCollection in meinem "einfachen" business-Objekt. Diese Anforderung scheint zu implizieren, dass die business-Objekts kann nicht sein, völlig unwissend von der Persistenz-Mechanismus nach alle (eigentlich ist das Wort "Korrektur" klingt wie etwas, das behoben werden muss/verändert die Arbeit mit dem gewählten persistenzmechanismus).

Speziell beziehe ich mich auf die Vereins-Korrektur-region generiert der ADO.NET POCO Entity Generator, z.B.:

    #region Association Fixup

    private void FixupImportFile(ImportFile previousValue)
    {
        if (previousValue != null && previousValue.Participants.Contains(this))
        {
            previousValue.Participants.Remove(this);
        }

        if (ImportFile != null)
        {
            if (!ImportFile.Participants.Contains(this))
            {
                ImportFile.Participants.Add(this);
            }
            if (ImportFileId != ImportFile.Id)
            {
                ImportFileId = ImportFile.Id;
            }
        }
    }

    #endregion

sowie die Verwendung von FixupCollection. Andere häufige Persistenz-ignorant ORMs nicht haben ähnliche Einschränkungen.

Ist dies aufgrund von grundlegenden design-Entscheidungen in EF? Ist einige level von nicht-Unwissenheit, hier zu bleiben, auch noch in späteren Versionen von EF? Ist es ein cleverer Weg, dies zu verbergen Persistenz Abhängigkeit von der POCO-Entwickler?

Wie funktioniert das in der Praxis aus, Ende-zu-Ende? Zum Beispiel, ich verstehe-Unterstützung wurde erst vor kurzem Hinzugefügt, für die ObservableCollection ist (was gebraucht wird für Silverlight und WPF). Gibt es Fallstricke, die in anderen software-Schichten aus der design-Anforderungen des EF-kompatibel POCO-Objekte?

InformationsquelleAutor Eric J. | 2010-05-31
Schreibe einen Kommentar