структура классов, имеющих отношения внешнего ключа, сгенерированные из структуры сущностей

Я создал свои классы из базы данных через Entity Framework. Имя класса — это имя таблицы, а свойства — это поля. Теперь у меня есть три таблицы: 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. Снова классы Book & Course определяются как ICOLLECTION. Какова польза/важность этого?

Я знаю, что эта структура используется для отображения отношения внешнего ключа в таблице.

Пожалуйста, кто-нибудь может объяснить мне это.


person user4221591    schedule 14.04.2015    source источник


Ответы (1)


Первый вопрос:

HashSet в основном полезен в ситуациях, когда время вставки и удаления очень важно, например, при обработке данных. Это также чрезвычайно полезно для сравнения наборов данных (опять же при обработке) с использованием таких операций, как пересечение, исключение и объединение. В любой другой ситуации минусы обычно перевешивают плюсы. (https://stackoverflow.com/a/18158905/1845408)

Второй вопрос:

ICollection‹> (MSDN: http://msdn.microsoft.com/en-us/library/92t2ye13.aspx) для списка объектов, которые необходимо повторять и изменять, List‹> для списка объектов, которые необходимо повторять, изменять, сортировать и т. д. (см. здесь полный список: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx). https://stackoverflow.com/a/10113331/1845408

person renakre    schedule 14.04.2015
comment
Спасибо за ответ. Но почему hashset используется внутри конструктора и icollection для свойства. Вы упомянули, что HashSet используется во время вставки и удаления, какая связь здесь с использованием внутри конструктора. Пожалуйста, объясни. - person user4221591; 14.04.2015