Warum ist die erste Proxy-Sammlung meines Entity Framework-Codes ungültig und warum kann ich sie nicht festlegen?

Bin ich mit dem DBContext und haben zwei Klassen, deren Eigenschaften sind alle virtuellen. Ich sehe im debugger, dass ich immer ein proxy-Objekt, wenn ich der Abfrage den Kontext. Jedoch, eine Sammlung, die Immobilie ist immer noch null, wenn ich versuchen, um es hinzuzufügen. Ich dachte, dass der proxy würde gewährleisten, dass die Kollektion ist initialisiert.

Weil meine Poco-Objekt kann verwendet werden, außerhalb der Daten-Kontext, ich Hinzugefügt eine überprüfung für die collection null im Konstruktor, und erstellen Sie ihn, falls erforderlich:

public class DanceStyle
{
    public DanceStyle()
    {
        if (DanceEvents == null)
        {
            DanceEvents = new Collection<DanceEvent>();
        }
    }
    ...
    public virtual ICollection<DanceEvent> DanceEvents { get; set; }
}

Dass arbeiten außerhalb der Daten-Kontext, aber wenn ich wieder ein Objekt mit einer Abfrage, obwohl der test ist wahr, wenn ich versuche es einzustellen, bekomme ich folgende exception: 'Die Eigenschaft 'DanceEvents' Typ 'DanceStyle_B6089AE40D178593955F1328a70eaa3d8f0f01dde9f9fbd615f60a34f9178b94' kann nicht gesetzt werden, weil die Sammlung ist bereits auf eine EntityCollection.'

Ich es sehen kann, ist null und ich kann nicht, um es hinzuzufügen, aber weder kann ich auf eine Auflistung, weil der proxy sagt es bereits. Also ich kann es nicht benutzen. Ich bin verwirrt.

Hier ist das DanceEvent Klasse:

public class DanceEvent
{
    public DanceEvent()
    {
        if (DanceStyles == null)
        {
            DanceStyles = new Collection<DanceStyle>();
        }
    }
    ...
    public virtual ICollection<DanceStyle> DanceStyles { get; set; }
}

Habe ich weggelassen, die anderen Wert-Typ-Eigenschaften aus dem obigen code. Ich habe keine anderen Zuordnungen für diese Klassen in der Kontext-Klasse.

InformationsquelleAutor der Frage Rob Kent | 2010-11-01

Schreibe einen Kommentar