Упражнение 2. Использование наследования при создании модели
В этом упражнении вы добавите в модель новый класс, наследуемый от уже существующего класса и таким образом, измените структуру базы данных.
Генерация общей таблицы
В этой части упражнения на основе двух классов базового и производного будет сгенерирована одна таблица со специальным столбцом, позволяющим различить базовую и производную сущности.
1. Добавьте в файл модели новый класс, определяющий, например, важные заказы:
public class VipOrder: Order
{
public string status { get; set; }
}
2. В класс контекста базы данных добавьте свойство с именем новой таблицы:
public DbSet<VipOrder> VipOrders { get; set; }
3. В обработчике события загрузки формы сразу после создания двух заказов создайте особый заказ и добавьте его в базу данных:
context.VipOrders.Add(new VipOrder { ProductName = "Авто", Quantity = 101, PurchaseDate = DateTime.Parse("10.01.2016"), status = "Высокий" });
4. Поскольку структура базы данных изменилась, то в конструкторе формы главного приложения после создания контекста вызовите метод SetInitializer() класса Database и передайте ему экземпляр объекта DropCreateDatabaseIfModelChanges, который указывает Code-First, что при изменении модели данных, базу данных нужно будет удалить и воссоздать с новой структурой:
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SampleContext>());
5. Для возможности просмотра именно особых заказов добавьте на форму в группирующий элемент новый элемент выбора RadioButton (ViporderradioButton) и добавьте в метод Output() его проверку и изменение в зависимости от его значения элемента GridView:
|
|
else if (this.ViporderradioButton.Checked == true)
GridView.DataSource = context.VipOrders.ToList();
6. Постройте приложение. Раскройте в окне Server Explorer построенную базу и проверьте, что созданы две таблицы Customers и Orders (для хранения и обычных и особых заказов используется одна таблица).
7. Откройте определение таблицы Orders и проверьте, что в нее добавлены поле status для особых заказов и поле Discriminator для отличия двух сущностей (маркер отличий).
8. Запустите приложение. Так как создается новая база данных, то заказчиков нет. Отобразите в сетке заказы с переключателем Orders, обратите внимание, что отобразятся все заказы, отобразите данные с переключателем VipOrders – должны отобразится только особые заказы. Закройте приложение.
9. В окне Server Explorer откройте таблицу Orders в режиме отображения данных. Обратите внимание, что в столбце Discriminator указаны типы заказов, т.е. к какой сущности относится данная запись в таблице, а для типа VipOrder заполнено поле status.
Для каждого класса отдельная таблица
В этой части упражнения на основе двух классов базового и производного будет сгенерированы две таблицы – по одной на каждую сущность.
1. Для использования этого подхода перед классом VipOrder укажите атрибут Table с указанием имени таблицы VipOrders:
|
|
[Table("VipOrders")]
2. Постройте и запустите приложение. Функциональность приложения не изменилась. Закройте приложение.
3. Раскройте в окне Server Explorer построенную базу и проверьте, что созданы три таблицы Customers, Orders и VipOrder s (для хранения и обычных и особых заказов используется своя таблица).
4. Проверьте структуру таблицы Orders и обратите внимание, что в этом случае нет поля Discriminator, а в таблице VipOrder s указано поле status.
Упражнение 3. Построение EDM для работы с базой данных
В этом упражнении расматривается подход Database first, при котором на основе созданной ранее базы данных (база данных School) формируют ее модель – Entity Data Model (EDM). С помощью конструктора ADO.NET EDM Designer вы создадите концептуальную модель, модель хранения и сведения о сопоставлениях, которые собраны в файле EDMX.
Вы разработаете новое приложение Windows Forms, в котором сформируеете запросы для доступа к данным в модели, выполните привязку результатов запросов к элементам управления для их отображения, а также реализуете возможность обновления в объектах и сохранение внесенных изменений в базу данных.
Дата добавления: 2019-02-26; просмотров: 163; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!