Соглашения о конфигурации сгенерированной базы данных
База данных создана. Далее вы просмотрите ее структуру.
1. Откройте окно Server Explorer в Visual Studio и нажмите на кнопке Connect to Database.
2. В открывшемся окне выберите поставщик SQL Server и настройте подключение к созданной базе данных MyShop, используя имя сервера “.\SQLEXPRESS” или (localdb)\v11.0 в окне Add Connection:
3. После этого в окне Server Explorer отобразится новое подключение:
4. Проверьте, что в базе данных были созданы две таблицы, имеющие соответствующие столбцы.
Согласно соглашениям EF по именованию таблиц, их название генерируется в множественном числе (основываясь на правилах английского языка), т.е. для класса Customer генерируется таблица Customers, для класса Order генерируется таблица Orders.
Названия столбцов соответствуют названиям свойств сущностных классов.
5. В контекстном меню таблицы Customers выберете пункт Open Table Defenition (Открыть определение таблицы) и посмотрите, что типы данных .NET преобразованы в типы данных T-SQL: Int32 в INT, String в NVARCHAR(max), byte[] в VARBINARY(max) и т.д.:
6. Изучите структуру таблиц, обратите внимание на некоторые соглашения о проецировании сущностных классов, которые используются в Code-First.
Например, свойства CustomerId и OrderId в сущностном классе EF преобразовал в первичные ключи в базе данных (EF автоматически ищет подстроку “Id” в именах свойств модели с помощью механизма рефлексии). Эти поля используют автоинкремент с помощью инструкции IDENTITY (1,1) и не могут иметь значение NULL.
|
|
7. Откроете структуру таблицы Orders и проверьте, что EF создал внешний ключ Customer_CustomerId, ссылающий на таблицу Customers.
Это было достигнуто за счет того, что мы указали виртуальное свойство в классе Customer ссылающееся на класс Order и добавили обратное свойство в классе Order, ссылающееся на Customer. Благодаря тому, что тип виртуального свойства унаследован от IEnumerable<T>, EF догадался, что нужно реализовать отношение “один ко многим” (one-to-many) между этими таблицами. При подходе к именованию внешнего ключа EF использовал следующее соглашение:
[Имя навигационного свойства]_[Имя первичного ключа родительской таблицы]
Обратите внимание также на то, что EF сгенерировал еще одну таблицу с названием __MigrationHistory. Эта таблица хранит различные версии изменения структуры базы данных. В частности, в поле Model эта таблица хранит метаданные модели, представленные в виде двоичного объекта BLOB. Если позже вы измените модель в своем коде, EF вставит в эту таблицу новую запись, с метаданными новой модели.
8. С помощью команды контекстного меню Показать таблицу данных таблицы Customer просмотрите ее содержимое – вы увидите те данные, которые и были вами добавлены.
Отображение данных
Далее в этой части упражнения вы реализуете вывод данных из базы в подходящие для этого элементы управления.
|
|
1. В данном упражнении используется один элемент GridView, предназначенный для отображения данных из двух таблиц – Customers и Orders. Для того чтобы при выполнении программы у пользователя была возможность выводить попеременно данные из разных таблиц добавьте в класса формы метод, в котором при проверке состояния элементов RadioButton менялся бы источник заполнения элемента GridView, например:
private void Output()
{
if (this.CustomerradioButton.Checked == true)
GridView.DataSource = context.Customers.ToList();
else if (this.OrderradioButton.Checked == true)
GridView.DataSource = context.Orders.ToList();
}
2. Добавьте обработчик нажатия кнопки Показать данные и в нем вызовите только что созданный метод Output().
3. Также в этом же обработчике создайте LINQ-запрос на выборку заказчиков и сортировки их по имени:
var query = from b in context.Customers
orderby b.FirstName
select b;
4. Заполните элемент ComboBox (имя элемента customerList) результатом запроса:
customerList.DataSource = query.ToList();
5. Добавьте метод Output() в обработчик события нажатия кнопки Добавить данные после метода SaveChanges().
6. Постройте и запустите приложение. Нажмите кнопку Показать данные. Информация о введенных ранее заказчиках должна отобразиться в реализованных элементах.
|
|
7. Введите информацию о новом заказчике в текстовые поля и нажмите кнопку Добавить данные. Информация о введенном заказчике должна отобразиться.
Дата добавления: 2019-02-26; просмотров: 180; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!