6 Stimmen

Wie definiert man eine Sammlung in einem POCO in Entity Framework 4?

Sagen wir, ich habe eine Team Klasse, die Folgendes enthält 0 oder mehr Spieler .

En Spieler Klasse ist einfach:

public class Player
{
    public long Id { get; set; }
    public string Name { get; set; }
    public Team Team { get; set; }
}

Aber wie definiert man am besten die Team Klasse?

Option 1

public class Team
{
    public long Id { get; set; }
    public string Name { get; set; }
    public ICollection<Player> Players { get; set; }
}

Option 2:

public class Team
{
    public Team()
    {
        Players = new Collection<Player>();
    }

    public long Id { get; set; }
    public string Name { get; set; }
    public ICollection<Player> Players { get; set; }
}

Option 3:

public class Team
{
    public long Id { get; set; }
    public string Name { get; set; }
    public IQueryable<Player> Players { get; set; }
}

Option 4:

public class Team
{
    public long Id { get; set; }
    public string Name { get; set; }
    public ObjectSet<Player> Players { get; set; }
}

7voto

Craig Stuntz Punkte 124703

Lassen wir zunächst einmal die inakzeptablen Optionen beiseite. Option 3 ist nicht wirklich richtig; wir befinden uns im Objektraum, nicht im LINQ to Entities-Raum. Option 4 ist auch nicht richtig; ObjectSet ist zur Verwendung auf einem ObjectContext nicht bei einem POCO-Typ.

Bleiben also 1 und 2. Beide werden korrekt funktionieren. Das Entity Framework wird die Sammlung initialisieren, wenn verwandte Instanzen aus der Datenbank materialisiert werden, wenn Sie dies nicht wünschen. Option 2 hat jedoch den Vorteil, dass Sie eine neue Team in Ihrem eigenen Code, bevor Sie ihn in der Datenbank speichern und zurücklesen. Ich würde also wahrscheinlich diese Variante wählen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X