2015-04-14 44 views
0

我通过实体框架从数据库生成了我的类。类名是表名,属性是字段。 现在我有三张表,App_users,Book,Course。从实体框架生成的具有外键关系的类的结构

App_users与书和课程有一对多的关系(用户标识符是外键)。当我看到的用户类,它具有这样的结构:

public partial class App_users 
{ 
    public App_users() 
    { 
     this.Book = new HashSet<Book>(); 
     this.Course = new HashSet<Course>(); 
    } 

    public int USERID { get; set; } 
    public string USERNAME { get; set; } 
    public virtual ICollection<Book> Book { get; set; } 
    public virtual ICollection<Course> Course { get; set; } 
} 
  1. 我想知道,为什么这些表(书&场)被定义为HashSet的在构造函数中。这样做有什么用处/重要性?
  2. 再次把课本&课程定义为ICOLLECTION。这样做有什么用处/重要性?

我知道这个结构用于显示表中的外键关系。

请任何人都可以解释我这个。

回答

0

第一个问题:

的HashSet的是在插入和移除的时间是非常重要的,大多情况下有用,例如处理数据时。对于比较数据集(再次处理时)使用交叉,除了和联合等操作也非常有用。在其他任何情况下,利弊通常都会超过专业人士。 (https://stackoverflow.com/a/18158905/1845408

第二个问题:

ICollection的<>(MSDN:http://msdn.microsoft.com/en-us/library/92t2ye13.aspx),用于对象的列表的对象的列表,需要通过迭代和修改,列表<>那需要迭代,修改,排序等(见这里查看完整列表:http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx)。 https://stackoverflow.com/a/10113331/1845408

+0

感谢您的回复。但为什么hashset在构造函数和icollection中用于属性。你提到HashSet用于插入和删除时间,这里使用的构造函数中的关系是什么。请解释。 – user4221591