Соглашения о конфигурации сгенерированной базы данных



База данных создана. Далее вы просмотрите ее структуру.

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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!