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

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

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

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

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

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

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

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

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

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

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

Часть 1-3

«Технологии доступа к данным. Использование Entity Framework 4.0»

Выполнили:

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

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

Группа: 9301

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

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

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

2012 Лабораторная работа №3

Цель работы: освоение технологии доступа к данным при использовании Entity Framework 4.0. Знакомство с основными функциями EF

Подготовка к выполнению задания

При помощи Microsoft SQL Server Management Studio или Server Explorer в Visual Studio

убедитесь, что СУБД содержит базу данных «AdventureWorks» и доступна для подключений.

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

Entity Framework (EF) — объектно-ориентированная технология доступа к данным, является object-relational mapping (ORM) решением для .NET Framework от Microsoft. Предоставляет возможность взаимодействия с объектами как посредством LINQ в виде LINQ to Entities, так и с использованием Entity SQL. Для облегчения построения web-решений используется как ADO.NET Data Services (Astoria), так и связка из Window Communication Foundation и Windows Presentation Foundation, позволяющая строить многоуровневые приложения, реализуя один из шаблонов проектированияMVC, MVP или MVVM.

Entity SQL

Entity SQL представляет собой язык, подобный языку SQL, который позволяет выполнять запросы к концептуальным моделям в Entity Framework.

Формализация задачи

Рис 1. UML диаграмма

Задание

Упражнение 1

  1. Измените заголовок формы на «Сотрудники».

Рис. 2. Пример 1

2. Добавьте на форму компонент «TreeView».

3. Сделайте так, чтобы он всегда занимал все пространство формы (даже при изменении

ее размеров).

Упражнение 2

1. Добавьте в модель данных Entity Framework, включив в нее таблицы Employee и

Contact.

  1. Добавьте в класс формы поле, содержащее созданную модель.

Рис 3. Пример 2

3. Добавьте в метод, вызываемый при загрузке формы, код для добавления в дерево

(TreeView) единственного элемента, содержащего имя и фамилию президента компании.

Упражнение 3

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

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

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

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

Рис 4. Пример 3

Ход выполнения работы

Упражнение 1 – Проектирование экранной формы

  1. Изменили заголовок формы на «Сотрудники».

2. Добавили на форму компонент «TreeView».

3. Сделали так, чтобы он всегда занимал все пространство формы (даже при изменении ее размеров).

Создали пустой проект в MS Visual Studio 2010 с формой из необходимых компонентов.

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

Упражнение 2 – Создание модели Entity Framework и использование Linq-to Entities

1. Добавьте в модель данных Entity Framework, включив в нее таблицы Employee и Contact.

2. Добавьте в класс формы поле, содержащее созданную модель.

3. Добавьте в метод, вызываемый при загрузке формы, код для добавления в дерево (объект TreeView) единственного элемента, содержащего имя и фамилию президента

компании. Президента можно найти среди сотрудников, выбрав сотрудника, у которого нет начальника.

Создали модель с доступом к необходимым таблицам.

Код для вывода имени президента компании:

private void GetPredisentName()

{

var p = db.Employee

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

foreach (var emp in p)

{

treeView.Nodes.Add(emp.Contact.FirstName + " " + emp.Contact.LastName);

}

}

Листинг

Упр. 2

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)

{

treeView.Nodes.Add(emp.Contact.FirstName + " " + emp.Contact.LastName);

}

}

private void MakeHierarchy()

{

}

private void Form1_Load(object sender, EventArgs e)

{

}

}

}

Результат

Рис. 6. Результаты упражнения 2