Установка Entity Framework 6 в проект
Перед тем как использовать EF в проекте при подходе Code-First необходимо добавить ссылки на библиотеки EF.
Выполните следующие действия:
1. Для добавления поддержки EF с помощью NuGet (начиная с версии 4, библиотека EF входит в менеджер пакетов NuGet), выберите в окне Solution Explorer проект CodeFirst, щелкните по нему правой кнопкой мыши и выполните команду из контекстного меню Manage Nuget Packages.
2. В появившемся диалоговом окне на вкладке Обзор выберите последнюю версию Entity Framework и нажмите кнопку Install (Установить):
3. После этого появится окно с описанием лицензии на использование Entity Framework. Согласитесь с условиями, после чего NuGet установит в проект Entity Framework.
4. Добавьте ссылку на ключевое пространство имен в EF - System.Data.Entity в файле Model.cs:
using System.Data.Entity;
5. Повторите три первых действия для установки EF в проект CustomerManager.
Класс контекста данных
Созданные классы Customer и Order описывают структуру бизнес-модели, которая используется в приложении. Для того чтобы эти классы служили также для управления данными в базе данных, нужно использовать класс контекста.
EF имеет два базовых класса контекста: ObjectContext – этот класс является более общим классом контекста данных, и используется, начиная с самых ранних версий EF и DbContext – этот класс контекста данных появился в Entity Framework 4.1, и он обеспечивает поддержку подхода Code-First (ObjectContext также обеспечивает работу подхода Code-First, но он труднее в использовании). Далее будет использоваться DbContext.
|
|
1. Для создания класса контекста добавьте новый класс SampleContext в проект CodeFirst.
2. В добавленном классе имя будущей базы данных укажите через вызов конструктора базового класса и укажите соответствующие таблицы (по традиции во множественном числе) базы данных с помощью свойств с типом DbSet:
using System.Data.Entity;
namespace CodeFirst
{
public class SampleContext : DbContext
{
public SampleContext() : base("MyShop")
{ }
public DbSet<Customer> Customers { get; set; }
public DbSet<Order> Orders { get; set; }
}
}
Этот класс контекста представляет полный слой данных, который можно использовать в приложениях. Благодаря DbContext, можно запросить, изменить, удалить или вставить значения в базу данных. Обратите внимание на использование конструктора в этом классе с вызовом конструктора базового класса DbContext и передачей ему строкового параметра.
В этом параметре указывается либо имя базы данных, либо строка подключения к базе данных. В данном случае указывается явно имя базы данных, т.к. по умолчанию, при генерации базы данных EF использует имя приложения и контекста данных (например, CodeFirst.SampleContext), которое использовать неудобно.
3. Постройте приложение.
Установка подключения к базе данных
Для установки подключения обычно используется файл конфигурации приложения, в проектах для настольных приложений это файл App.config.
|
|
1. Откройте файл конфигурации App.config и после закрывающего тега </configSections> добавьте секцию connectionStrings, в которой с помощью элемента укажите подключение:
<connectionStrings>
<add name="MyShop" connectionString="data source=(localdb)\v11.0;Initial Catalog=userstore.mdf;Integrated Security=True;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
В конструкторе класса контекста SampleContext была передана в качестве названия подключения строка "MyShop", поэтому данное название и указывается в атрибуте name=" MyShop".
Работа с данными
На текущий момент есть классы данных и класс контекста, необходимые для работы с базой данных, которая еще не существует. Простое создание этих классов не приводит к автоматическому созданию (изменению) базы данных при запуске приложения. Чтобы создать базу данных, нужно добавить код работы с данными с помощью EF, например, написать код вставки данных в таблицу.
1. В поле класса формы объявите ссылки:
a) на созданный ранее контекст данных:
SampleContext context;
b) на массив байт, для загрузки фото заказчика:
byte[] Ph;
2. В обработчике события нажатия кнопки Добавить данные создайте экземпляр класса контекста базы данных, создайте объект – заказчика с передачей в его свойства соответствующих значений текстовых полей формы. После этого добавьте методом Add() созданного заказчика в базу данных и, наконец методом SaveChanges() сохраните изменения в базе данных:
|
|
try
{
Customer customer = new Customer
{
Name = this.textBoxname.Text,
Email = this.textBoxmail.Text,
Age = Int32.Parse(this.textBoxage.Text),
Photo = Ph
};
context.Customers.Add(customer);
context.SaveChanges();
textBoxname.Text = String.Empty;
textBoxmail.Text = String.Empty;
textBoxage.Text = String.Empty;
}
catch(Exception ex)
{
MessageBox.Show("Ошибка: " + ex.ToString());
}
}
Данный код создает объект контекста SampleContext и использует его, чтобы добавить новые данные в таблицу Customers. Вызов метода SaveChanges() сохраняет изменения в базе данных, а при первой вставке данных вызов SaveChanges() создаст базу данных.
3. Добавьте обработчик нажатия кнопки Выберите файл, которая даст возможность загрузить изображение в базу данных.
4. В обработчике создайте объект стандартного диалогового окна для открытия файла, загрузите картинку в класс изображения Image и преобразуйте ее в массив байт:
|
|
OpenFileDialog diag = new OpenFileDialog();
if (diag.ShowDialog() == DialogResult.OK)
{
Image bm = new Bitmap(diag.OpenFile());
ImageConverter converter = new ImageConverter();
Ph = (byte[])converter.ConvertTo(bm, typeof(byte[]));
}
5. Постройте и запустите приложение.
6. Введите данные о заказчике и нажмите кнопку Добавить данные.
Обратите внимание, что при первом добавлении данных возникает заметная задержка, потому что в данном моменте и создается база данных.
7. Введите данные о втором заказчике. Обратите внимание, что данные добавились в этом случае быстро, т.к. они вставляются в уже существующую базу данных.
Дата добавления: 2019-02-26; просмотров: 256; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!