Entity Framework в приложении WPF (Code First)
последнее обновление: 21 июня 2018
Entity Framework предоставляет возможность работы с
Базой данных через
C# код.
Рассмотрим подход
Code First (пишем
C# код, а таблицы в
Базе данных создаются автоматически по
C# коду).
План (7 шагов)
Шаг 1. Создаем новый WPF проект
Шаг 2. Добавляем библиотеку Entity Framework используя NuGet
Нажимаем в меню: Tools → NuGet Package Manager → Manage NuGet Packages for Solution...
Нажимаем кнопку "Install"
Скрыть что подключилось << ...
Смотрим что подключилось >> ...
В проект в папку References добавились packages:
• EntityFramework
• EntityFramework.SqlServer
В файл App.config добавились новые строчки выделенные зеленым цветом
Файл: App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Шаг 3. Установка Microsoft SQL Server (для хранения базы данных)
Мы будем использовать
Microsoft SQL Server для хранения базы данных.
Если у Вас не установлена нужно
установить Microsoft SQL Server 2012... (или другую версию)
Шаг 4. Создаем соединиение с Базой данных Microsoft SQL Server в файле App.config
Добавляем соединение <connectionStrings>...</connectionStrings> к Базе данных в файле App.config
Новые добавленные строчки помеченные синим
Файл: App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="MyConnection1" connectionString="Data Source=EVGENI\MSSQLSERVER2012;Initial Catalog=MyDatabase1;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
На заметку!
•
Initial Catalog=MyDatabase1 это название базы данных. Если такое название не существует то новая база данных будет создана.
•
name="MyConnection1 " пишем любой текст это имя соединения. Это имя соединения будем использовать в C# классах.
•
Data Source=EVGENIMSSQLSERVER2012 это имя сервера базы данных (SQL Server name). Сервер базы данных может находится локально или на другом компьютере. Имя сервера базы данных появляется при открытии
SQL Server Management Studio (на картинке нарисовано).
Шаг 5. Добавим класс Book и класс UserContext для работы с Базой данных
Для подключения к
базе данных через
Entity Framework , нам нужен посредник -
контекст данных .
Контекст данных представляет собой класс, производный от класса
DbContext .
Контекст данных содержит одно или несколько свойств типа
DbSet , где T представляет тип объекта, хранящегося в базе данных
Класс UserContext это наш контекст данных
Наш контекст данных создаст базу данных MyDatabase1 (если ее не существует)
Класс Book создаст таблицу Books и заполнит данными.
Новые добавленные строчки помеченные синим
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.Entity;
namespace WpfApplication10
{
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public int Price { get; set; }
}
class UserContext : DbContext
{
public UserContext() : base("MyConnection1" )
{ }
public DbSet<Book> Books { get; set; }
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// add data
using (UserContext db = new UserContext())
{
// создаем объекты Book
Book book1 = new Book { Name = "Граф Монтекристо" , Price = 123 };
Book book2 = new Book { Name = "Властелин колец" , Price = 267 };
Book book3 = new Book { Name = "Три кота" , Price = 125 };
// добавляем объекты Book в контекст данных
db.Books.Add(book1);
db.Books.Add(book2);
db.Books.Add(book3);
// сохраняем контекст данных в базу данных
db.SaveChanges();
}
}
}
}
Шаг 6. Запускаем WPF приложение
Нажимаем вверху на зеленый треугольник
Приложение запустилось
После запуска приложения, выполнится C# код который:
• создаст Базу данных "MyDatabase1" (если такой нет)
• создаст таблицу Books (если такой нет)
• добавит значения в таблицу Books
Name="Граф Монтекристо" Price=123
Name="Властелин колец" Price=267
Name="Три кота" Price=125
Шаг 7. Проверяем как создалась наша База данных и таблица в Microsoft SQL Server
Смотрим значения в таблице в SQL Server Management Studio
Шаг 1. Открываем SQL Server Management Studio
Шаг 2. Смотрим значения в таблице
Раскрываем базу данных MyDatabase1
Нажимаем правой клавишей мыши на таблице dbo.Books и нажимаем Select Top 1000 Rows
Смотрим на значения:
Видим, что автоматически:
• создалась новая база данных MyDatabase1 (если такой не было)
• создалась новая таблица Books (если такой не было)
• в таблице Books добавились значения
На заметку!
Если запустим программу второй раз, то увидим что в таблице Books уже 6 строчек .
Если запустим программу третий раз, то увидим что в таблице Books 9 строчек .
Если запустим программу четвертый раз, то увидим что в таблице Books 12 строчек .
То есть если таблица Books существет, то при каждом запуске программы добавляются 3 строчки .