Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота1_2014.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать

InitializeComponent();

db = new PersonContext();

db.Persons.Load(); // загружаем данные из БД

// выполняем привязку

dataGridView1.DataSource = db.Persons.Local.ToBindingList();

}

private void button1_Click(object sender, EventArgs e)

{

Person p = new Person { Name = textBox1.Text, Age = (int)numericUpDown1.Value };

db.Persons.Add(p);

db.SaveChanges();

MessageBox.Show(p.Name + " добавлено");

}

private void button2_Click(object sender, EventArgs e)

{

try

{

if (dataGridView1.SelectedRows.Count > 0)

{

int indexOfSelectedRow = dataGridView1.SelectedRows[0].Index;

int id = Int32.Parse(dataGridView1[0, indexOfSelectedRow].Value.ToString());

Person person = db.Persons.Find(id);

if (person != null)

{

db.Persons.Remove(person);

db.SaveChanges();

}

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

}

}

Як і при підході Model First тут ми створюємо контекст даних PersonContext. Для отримання всіх даних використовується метод db.Persons.Load (), а потім виконуємо прив'язку до елементу Datagridview: db.Persons.Local.ToBindingList ();

У коді збереження після натискання кнопки треба виконати два методи: db.Persons.Add (p);, в який передаємо новий об'єкт Person, і метод SaveChanges (), який власне і виконує збереження в БД. На більш низькому рівні метод SaveChanges () генерує sql-вираз INSERT і здійснює вставку в БД.

І схожим чином працює видалення, тільки в цьому випадку застосовується метод db.Persons.Remove (person); і, щоб зафіксувати видалення, також використовується метод SaveChanges ().

І на завершення роботи з формою нам треба додати код знищення контексту даних. Так як у нас визначений один контекст на форму, то і знищувати ми його будемо при знищенні форми, тобто в її методі Dispose, визначення якого знаходиться у файлі Form1.Designer.cs. Відкриємо його, знайдемо реалізацію методу Dispose форми і змінимо його наступним чином:

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

db.Dispose();

base.Dispose(disposing);

}

Тепер ми можемо запустити і додати парочку нових об'єктів Person. Якщо ми закриємо форму, припинимо виконання проекту і потім запустимо проект знову, то побачимо, що раніше додані елементи завантажуються в DataGridview. Де ж це все зберігається?

Щоб це дізнатися, виберемо в меню Visual Studio пункт View-> Other Windows-> Database Explorer (для VS 2013). І у вікні оглядача баз даних натиснемо на значок Connect to Database:

У вікні, додавання підключення встановлюємо підключення до створеної через CodeFirst бази даних. У полі Server name вводимо ім'я SQL сервера, яке використовується на вашому комп'ютері. І потім у полі Select or Enter database name вводимо назву нашого підключення DbConnection (яке ми встановили в конструкторі контексту даних).

І після вибору підключення ми можемо побачити базу даних та її таблиці у вікні Database Explorer:

Також зверніть увагу, що таблиця для зберігання об'єктів Person називається People, так як для автоматичної генерації таблиць використовуються правила англійської мови. І так як множина від person - people, то і таблиця називається people, а не persons, як я назвав властивість в контексті бази даних. У більшості випадків назви таблиць будуть містити ім'я моделі з додаванням суфікса s: клас user - таблиця users і т.д.

І якщо ми відкриємо таблицю, то побачимо збережені в ній нами дані.