Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пак Новакова + / Раздел_1.Ч1_3-1_4.СоловьёвЯрославцева (EF и изучение паттернов).docx
Скачиваний:
82
Добавлен:
03.06.2014
Размер:
719.63 Кб
Скачать

Упражнение 3 – Добавление в модель хранимой процедуры

1. Обновили модель, добавив в нее хранимую процедуру «uspGetManagerEmployees».

2. Для хранения результатов ее вызова сгенерировали новый тип (Complex Type).

3. Изменили метод, вызываемый при загрузке формы. В нем должнобыло происходить

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

Изменили программу, добавив вывод иерархии подчиненности всех сотрудников компании. Для этого к модели подключили хранимую процедуру.

Листинг

Упр. 3

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace UseEntityFramework

{

public partial class Form1 : Form

{

private AdventureWorksEntities2 db;

public Form1()

{

db = new AdventureWorksEntities2();

InitializeComponent();

GetPredisentName();

}

private void GetPredisentName()

{

var p = db.Employee

.Where (o => o.ManagerID == null);

foreach (var emp in p)

{

AddEmployeeToHierarchy((int)emp.EmployeeID, treeView.Nodes.Add(emp.Contact.FirstName + " " + emp.Contact.LastName));

}

}

private void MakeHierarchy()

{

}

public void AddEmployeeToHierarchy(int EmpID, TreeNode node)

{

System.Data.Objects.ObjectResult<uspGetManagerEmployees_Result> res = db.uspGetManagerEmployees(EmpID);

foreach (var emp in res)

{

AddEmployeeToHierarchy((int)emp.EmployeeID, node.Nodes.Add(emp.FirstName + " " + emp.LastName));

}

}

private void Form1_Load(object sender, EventArgs e)

{

}

}

}

Рис. 7. Результат упражнения 3

Вывод: В ходе лабораторной работы была изучена работа с Entity Framework 4.0. Для работы было создано приложение, подключающее к базе данных и использующее необходимые данные из таблиц и хранимые процедуры. Также научились взаимодействовать программно с базой данных, которая прикреплена к проекту.

МИНОБР НАУКИ РОССИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» им. В. И.УЛЬЯНОВА (ЛЕНИНА)» (СПбГЭТУ)

ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ И ИНФОРМАТИКИ

КАФЕДРА СИСТЕМ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ

ЛАБОРАТОРНАЯ РАБОТА

по учебной дисциплине «Паттерны проектирования приложений»

на тему «Углублённое изучение ООП»

Часть 1-4

«Изучение паттернов проектирования»

Выполнили:

Соловьёв С.П.

Ярославцева В.А.

Группа: 9301

Факультет: КТИ

Преподаватель: Горячев А.В.

Санкт-Петербург

2012 Лабораторная работа 4

Цель работы: ознакомиться с применением паттернов проектирования в построении архитектуры приложений.

Задание: выполнить три упражнения. Каждое упражнение представляет собой реализацию того или иного паттерна, а именно:

  • Паттерн наблюдатель

  • Паттерн одиночка

  • Паттерн интерфейс

Общие сведения:

  1. ПАТТЕРН НАБЛЮДАТЕЛЬ (Observer)

Паттерн наблюдатель определяет отношение «Один - ко - многим» между объектами таким образом, что при изменении состояния одного объекта происходит автоматическое оповещение и обновление всех зависимых связей.

На рисунке 1 изображена примерная диаграмма классов паттерна Наблюдатель:

Рисунок – 1.UML-диаграмма классов паттерна Observer

1. Интерфейс субъекта. Используется объектами для регистрации в качестве

наблюдателя, а также исключения из списка.

2. Каждый субъект может иметь несколько наблюдателей.

3. Каждый потенциальный наблюдатель должен реализовать интерфейс Observer.

Интерфейс содержит единственный метод update(), который вызывается при

изменении состояния субъекта.

4. Субъект реализует интерфейс Subject. Кроме методов регистрации и исключения,

субъект также реализует метод notifyObservers(), оповещающий всех текущих

наблюдателей об изменении состояния.

5. Субъект может иметь get – и set – методы для изменения состояния.

6. Наблюдатели могут относиться к любому классу, реализующему интерфейс

Observer. Каждый наблюдатель регистрируется у конкретного субъекта для

получения обновлений.