Работа с данными в Entity Framework

Работа с данными в Entity Framework

Всем доброго времени суток. На связи Алексей Гулынин. В прошлых статьях мы рассмотрели различные подходы по работе с Entity Framework. В данной статье я бы хотел рассказать, как работать с данными в Entity Framework. Рассмотрим следующие операции:

  1. Добавление записи
  2. Чтение записей
  3. Редактирование записи
  4. Удаление записи

Создадим новый проект. В этот раз тип проекта будет "Приложение Windows Forms":

Добавим элемент DataGridView на нашу форму. Также добавим 3 кнопки: "Добавление", "Редактирование", "Удаление". Добавим ещё 2 элемента "TextBox", в которые будем выводить информацию о записи, которая в данный момент выделена (эти 2 "TextBox" будут использованы ещё для добавления новой записи). Добавим ещё один "TextBox", в который будет выводиться информация об "ID" записи (это нужно будет для редактирования записи). Также добавим 2 элемента "label". В конечном итоге наша форма будет выглядеть следующим образом:

Работа с данными в EF

Будем использовать подход "Code First". Создадим следующий класс:

public class Countries
{
  public int Id { get; set; }
 
  public string Country { get; set; }
 
  public string Capital { get; set; }

}

Основной код будет в файле "Form1.cs". Сразу приведу весь код, в комментариях он будет подробно рассмотрен:

using System;
using System.Windows.Forms;
using System.Data.Entity;
using System.Data.Entity.Migrations;

namespace WorkWithDataInEF
{
  public partial class Form1 : Form
  {
    private MyModel db;

    public Form1()
    {
      // Создаём объект нашего контекста
      db = new MyModel();
      InitializeComponent();
      // Загружаем данные из таблицы в кэш
      db.Countries.Load();
      // Привязываем данные к dataGridView
      dataGridView1.DataSource = db.Countries.Local.ToBindingList();
    }

    // Событие: клик по ячейке таблицы
    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
      // Проверка выборки строк
      // Если строка не выбрана, то дальше ничего не происходит
      if (dataGridView1.CurrentRow == null) return;

      // Получаем выделенную строку и приводим её у типу Countries
      Countries country = dataGridView1.CurrentRow.DataBoundItem as Countries;

      // Если мы щёлкаем по пустой строке, то ничего дальше не делаем
      if (country == null) return;

      // Выводим данные о стране и её столице в TextBox
      tb_Country.Text = country.Country;
      tb_Capital.Text = country.Capital;
      tB_ID.Text = country.Id.ToString();
    }

    // Добавление записи
    private void btn_Add_Click(object sender, EventArgs e)
    {
      // Проверяем, что в текстовых полях есть данные
      if (tb_Country.Text == String.Empty || tb_Capital.Text == String.Empty)
      {
        MessageBox.Show("Заполните данные о стране!");
        return;
      }

      // Создаём экземпляр класса Countries,
      // т.е получаем данные о нашей стране из текстовых полей
      Countries country = new Countries
      {
        Country = tb_Country.Text,
        Capital = tb_Capital.Text
      };

      // Заносим данные в нашу таблицу
      db.Countries.Add(country);
      // Обязательно сохраняем изменения
      db.SaveChanges();
      // Обновляем наш dataGridView, чтобы в нём отобразилась новая страна
      dataGridView1.Refresh();

      // Обнуляем текстовые поля
      tb_Country.Text = String.Empty;
      tb_Capital.Text = String.Empty;
      tB_ID.Text = String.Empty;
    }

    // Редактирование записи
    private void btn_Edit_Click(object sender, EventArgs e)
    {
      // Проверяем, что выбрана запись
      if (tB_ID.Text == String.Empty) return;
      // Получаем id из текстового поля
      int id = Convert.ToInt32(tB_ID.Text);
      // Находим страну по этому id с помощью метода Find()
      Countries country = db.Countries.Find(id);
      if (country == null) return;
      country.Country = tb_Country.Text;
      country.Capital = tb_Capital.Text;
      // Добавляем или обновляем запись
      db.Countries.AddOrUpdate(country);
      db.SaveChanges();
      dataGridView1.Refresh();
    }

    // Удаление записи
    // Всё аналогично редактирования записи, только используется метод Remove()
    private void btn_delete_Click(object sender, EventArgs e)
    {
      if (tB_ID.Text == String.Empty) return;
      int id = Convert.ToInt32(tB_ID.Text);
      Countries country = db.Countries.Find(id);
      if (country == null) return;
      country.Country = tb_Country.Text;
      country.Capital = tb_Capital.Text;
      db.Countries.Remove(country);
      db.SaveChanges();
      dataGridView1.Refresh();
    }
  }
}

Как мы видим — всё работает:

Работа с данными в EF

Скачать проект полностью можно по ссылке.

В данной статье вы узнали, как просто работать с данными в Entity Framework.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *