2010-04-14 15 views
6

Digamos que tengo una clase Equipo que contiene 0 o másJugadores.¿Cómo se define una colección en un POCO en Entity Framework 4?

El jugador clase es fácil:

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

Pero cuál es la mejor manera de definir la clase equipo?

Opción 1

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

Opción 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; } 
} 

Opción 3:

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

Opción 4:

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

Respuesta

7

En primer lugar, vamos a prescindir de las opciones inaceptables. La opción 3 no es realmente correcta; estamos en el espacio de objetos, no en el espacio LINQ to Entities. La opción 4 tampoco está bien; ObjectSet es para usar en un ObjectContext, no en un tipo de POCO.

Eso deja 1 y 2. Ambos funcionarán correctamente. Entity Framework inicializará la recopilación cuando materialice instancias relacionadas de la base de datos si decide no hacerlo. Sin embargo, la opción 2 tiene la ventaja de que puede usar un nuevo Team en su propio código antes de guardarlo en la base de datos y leerlo nuevamente. Así que probablemente elegiría ese.

Cuestiones relacionadas