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

Будем использовать подход "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();
}
}
}
Как мы видим — всё работает:

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




