Материал: Глава 17.3 Entity Framework

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

 

textBoxPassword.Text, Role =

(навигационному свойству Professor

 

(string)comboBoxRole.SelectedItem };

присваивается созданный ранее объект

 

 

professor)

 

 

 

 

 

Добавление созданного объекта user в

23

db.UserSet.Add(user);

коллекцию сущностей UserSet из контекста

данных, отвечающую за хранение сущностей в

 

 

 

 

базе данных

 

 

 

24

db.SaveChanges();

Сохранение изменений результата запроса в базе

данных

 

 

 

 

 

25

}

 

 

 

 

26

}

 

 

 

 

27

this.Form1.Visible = true;

Открытие формы авторизации

 

 

 

28

this.Visible = false;

Скрытие формы регистрации

 

 

 

29

}

 

 

 

 

§17.17.2 Авторизация пользователя

При авторизации пользователь вводит в форме авторизации свой логин

(textboxLogin), пароль (textBoxPassword) и нажимает на кнопку Войти

(buttonAuth).

Реализация метода обработчика нажатия на кнопку Войти представлена в листинге 17.4.

 

 

 

Листинг 17.4 – Авторизация пользователя

 

 

 

 

 

 

 

 

1

FormReg FormReg;

 

 

 

 

 

 

2

FormStudentAccount FormStudentAccount;

 

 

 

3

FormProfessorAccount FormProfessorAccount;

 

 

 

4

FormAdminPanel FormAdminPanel;

 

 

 

 

 

5

private void buttonAuth_Click(object sender, EventArgs

 

e)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

{

 

 

 

 

 

 

 

 

7

using(EntityModelContainer

 

db

=

 

new

 

EntityModelContainer())

 

 

 

 

 

 

 

 

 

 

 

 

 

8

{

 

 

 

 

 

 

 

 

9

foreach (User user in db.UserSet)

 

 

 

 

10

{

 

 

 

 

 

 

 

 

11

if(user.Login == textBoxLogin.Text && user.Password ==

 

textBoxPassword.Text && user.Role == "Студент")

 

 

 

12

{

 

 

 

 

 

 

 

 

13

this.FormStudentAccount = new FormStudentAccount(this,

 

user);

 

 

 

 

 

 

 

 

14

this.FormStudentAccount.Text

=

"Профиль

"

+

 

user.Student.Name;

 

 

 

 

 

 

15

this.FormStudentAccount.labelStudentName.Text = "Добро

 

пожаловать, " + user.Student.Name;

 

 

 

 

16

this.FormStudentAccount.Visible = true;

 

 

 

17

this.Visible = false;

 

 

 

 

 

 

18

}

 

 

 

 

 

 

 

 

 

else

if

(user.Login

==

textBoxLogin.Text

&&

 

19

user.Password == textBoxPassword.Text && user.Role ==

 

 

"Преподаватель")

 

 

 

 

 

 

20

{

 

 

 

 

 

 

 

 

21

this.FormProfessorAccount

 

 

=

 

new

 

FormProfessorAccount(this, user);

 

 

 

 

22

this.FormProfessorAccount.Text

=

"Профиль

"

+

 

 

user.Professor.Name;

 

 

 

 

 

 

23

this.FormProfessorAccount.labelProfessorName.Text

=

"Добро пожаловать, " + user.Professor.Name;

 

24

this.FormProfessorAccount.Visible = true;

 

25

this.Visible = false;

 

 

 

26

}

 

 

 

 

 

 

else

if

(user.Login

==

textBoxLogin.Text

&&

27

user.Password == textBoxPassword.Text && user.Role ==

 

"Администратор")

 

 

 

28

{

 

 

 

 

 

29

this.FormAdminPanel = new FormAdminPanel(this, user);

30

this.FormAdminPanel.Visible = true;

 

31

this.Visible = false;

 

 

 

32

}

 

 

 

 

 

33

}

 

 

 

 

 

34

}

 

 

 

 

 

35

}

 

 

 

 

 

В представленном методе идет последовательный перебор элементов коллекции UserSet, представляющий собой набор данных элементов из таблицы UserSet в базе данных. Если значение свойства Role элемента из коллекции равно «Студент», логин и пароль совпадают с теми, которые были введены в соответствующие текстовые поля (строка 11), то создается и открывается форма профиля студента FormStudentAccount. Если значение свойства Role элемента из коллекции равно «Преподаватель», логин и пароль совпадают с теми, которые были введены в соответствующие текстовые поля

(строка 19), то создается и открывается форма профиля преподавателя

FormProfessorAccount. Если значение свойства Role элемента из коллекции равно «Администратор», логин и пароль совпадают с теми, которые были введены в соответствующие текстовые поля (строка 27), то создается и открывается форма профиля администратора FormAdminPanel.

Обратите внимание, что при создании объекта одной из трех форм в конструктор передается дополнительно два параметра – ссылка на экземпляр текущего класса (формы авторизации) с помощью ключевого слова this и

ссылка на объект user, для которого осуществляется процесс авторизации,

чтобы использовать данные о пользователе при загрузке информации о нем в его профиле.

§17.17.3 Просмотр списка преподавателей

Рассмотрим, как будет осуществляться просмотр списка преподавателей через профиль студента. Список выводится в listBoxLecturer при нажатии кнопки Просмотр списка преподавателей (buttonShowProfessors). После нажатия на эту кнопку она меняет свою надпись на Просмотр и свое назначение – после этого после выбора из списка преподавателя, если нажать на кнопку Просмотр откроется форма информации о преподавателе (форма

5).

Реализация метода обработчика события нажатия на кнопку Просмотр списка преподавателей/Просмотр представлена в листинге 17.5.

 

 

Листинг 17.5 – Просмотр списка преподавателей

 

 

 

 

1

private void buttonShowProfessors_Click(object

 

Метод обработчик события нажатия на

sender, EventArgs e)

 

кнопку buttonShowProfessors

 

 

 

 

 

 

2

{

 

 

 

 

 

 

 

if (buttonShowProfessors.Text == "Просмотр списка

 

Проверка на равенство надписи кнопки

3

 

buttonShowProfessors значению

преподавателей")

 

 

 

"Просмотр списка преподавателей"

 

 

 

 

 

 

 

4

{

 

Если условие в строке 3 истинно, то

 

производим следующие действия

 

 

 

 

 

 

 

5

using (EntityModelContainer db = new

 

Создание объекта db контекста данных

EntityModelContainer())

 

EntityModelContainer

 

 

 

 

 

 

6

{

 

 

 

 

 

 

 

 

 

Цикл для обработки элементов коллекции

7

foreach (Professor professor in db.ProfessorSet)

 

db.ProfessorSet (коллекция сущностей

 

 

 

ProfessorSet из базы данных)

 

 

 

 

8

{

 

 

 

 

 

 

9

listBoxLecturer.Items.Add(professor.Name);

 

Добавление в список listBoxLecturer

 

значений свойства Name каждого

 

 

 

 

 

 

 

Источник: https://studfile.net/preview/16573806/