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

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

2

private void buttonOverview_Click(object sender, EventArgs

e)

 

 

3

{

 

 

4

OpenFileDialog open_dialog = new OpenFileDialog();

 

 

open_dialog.Filter

=

"Image

5

Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All

 

files (*.*)|*.*";

 

 

6

if (open_dialog.ShowDialog() == DialogResult.OK)

 

7

{

 

 

8

try

 

 

9

{

 

 

10

this.imageBytes = File.ReadAllBytes(open_dialog.FileName);

11

labelLoadingStatus.Text = "Успешно";

 

12

}

 

 

13

catch

 

 

14

{

 

 

15

labelLoadingStatus.Text = "Ошибка";

 

16

}

 

 

17

}

 

 

18

}

 

 

Для хранения картинок в памяти и сохранения в базе данных необходимо преобразовывать их в массив байтов. В строке 1 создается массив imageBytes, который будет хранить набор байтов. Поиск картинки происходит через диалоговое окно OpenFileDialog, экземпляр которого open_dialog создается в строке 4. Свойство Filter задает фильтр файлов,

благодаря чему в диалоговом окне можно отфильтровать файлы по расширению. Фильтр задается в следующем формате

Название_файлов|*.расширение

Например,

Текстовые файлы(*.txt)|*.txt

Можно задать сразу несколько фильтров, для этого они разделяются вертикальной линией |. Например,

Bitmap files (*.bmp)|*.bmp|Image files (*.jpg)|*.jpg

С помощью метода ShowDialog() происходит открытие диалогового

окна для открытия файла.

Рисунок 17.34 – Диалоговое окно для открытия файла

Если в окне была нажата кнопка «Открыть», то абсолютный путь до загружаемой картинки сохраняется в свойство FileName объекта open_dialog и передается в качестве параметра в метод ReadAllBytes,

который открывает этот файл, считывает содержимое файла в массив байтов imageBytes и затем закрывает файл. После корректного завершения загрузки файла в labelLoadingStatus выводится сообщение «Успешно». Если во время чтения возникнет исключение, то в labelLoadingStatus выведется сообщение «Ошибка».

Добавление нового пользователя в базу данных происходит по нажатию кнопки Зарегистрироваться (buttonReg). Реализация метода обработчика нажатия на кнопку Зарегистрироваться представлена в листинге 17.3.

 

 

Листинг 17.3. – Регистрация пользователя

 

 

 

1

private void buttonReg_Click(object sender,

Метод обработчик нажатия на кнопку buttonReg

EventArgs e)

 

 

 

 

 

2

{

 

 

 

 

3

if (comboBoxRole.SelectedItem.ToString() ==

Проверка выбранной при регистрации роли на

"Студент")

соответствие значению «Студент»

 

 

 

 

4

{

 

 

 

 

5

using (EntityModelContainer db = new

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

EntityModelContainer())

EntityModelContainer

 

 

 

 

6

{

 

 

 

 

 

Student student = new Student() { Name =

 

 

textBoxFIO.Text, NumberGroup =

Создание объекта student класса Student и

7

int.Parse(textBoxNumGroup.Text), PersonalData =

инициализация его свойств значениями,

 

richTextBoxPersonalData.Text, Photo =

введенными в соответствующие текстовые поля

 

this.imageBytes };

 

 

 

 

 

 

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

8

db.StudentSet.Add(student);

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

 

 

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

 

 

 

 

 

базе данных

 

 

 

9

db.SaveChanges();

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

данных

 

 

 

 

 

 

User user = new User() { Student = student,

Создание объекта user класса User и

 

инициализация его свойств значениями,

 

Login = textBoxLogin.Text, Password =

10

введенными в соответствующие текстовые поля

textBoxPassword.Text, Role =

 

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

 

(string)comboBoxRole.SelectedItem };

 

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

 

 

 

 

 

 

 

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

11

db.UserSet.Add(user);

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

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

 

 

 

 

базе данных

 

 

 

12

db.SaveChanges();

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

данных

 

 

 

 

 

13

}

 

 

 

 

14

}

 

 

 

 

15

else if (comboBoxRole.SelectedItem.ToString() ==

Проверка выбранной при регистрации роли на

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

соответствие значению «Преподаватель»

 

 

 

 

16

{

 

 

 

 

17

using (EntityModelContainer db = new

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

EntityModelContainer())

EntityModelContainer

 

 

 

 

18

{

 

 

 

 

 

Professor professor = new Professor() { Name =

 

 

textBoxFIO.Text, Position =

Создание объекта professor класса Professor

19

textBoxNumGroup.Text, PersonalData =

и инициализация его свойств значениями,

 

richTextBoxPersonalData.Text, Photo =

введенными в соответствующие текстовые поля

 

this.imageBytes };

 

 

 

 

 

 

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

20

db.ProfessorSet.Add(professor);

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

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

 

 

 

 

сущностей в базе данных

 

 

 

21

db.SaveChanges();

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

данных

 

 

 

 

 

 

User user = new User() { Professor = professor,

Создание объекта user класса User и

22

инициализация его свойств значениями,

Login = textBoxLogin.Text, Password =

 

введенными в соответствующие текстовые поля

 

 

 

 

 

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