代码之家  ›  专栏  ›  技术社区  ›  Stef Heyenrath Dariusz Woźniak

如何在实体框架4中的poco中定义集合?

  •  6
  • Stef Heyenrath Dariusz Woźniak  · 技术社区  · 14 年前

    假设我有一个 团队 包含 0以上 球员 .

    这个 运动员 上课很容易:

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

    但是什么是最好的定义 团队 班级?

    选项1

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

    选项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; }
    }
    

    选项3:

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

    选项4:

    public class Team
    {
        public long Id { get; set; }
        public string Name { get; set; }
        public ObjectSet<Player> Players { get; set; }
    }
    
    1 回复  |  直到 14 年前
        1
  •  7
  •   Craig Stuntz    14 年前

    首先,让我们放弃不可接受的选择。选项3不是很正确;我们在对象空间,而不是实体空间。选项4也不对; ObjectSet 用于 ObjectContext ,不是poco类型。

    剩下1和2。他们两个都能正常工作。如果选择不从数据库中具体化相关实例,则实体框架将初始化集合。但是,选项2的优点是可以使用新的 Team 在将其保存到数据库并读回之前,在您自己的代码中。所以我可能会选那个。