Современные веб-технологии
LINQ
Архитектура LINQ
Примеры написания запроса LINQ на языке C#
Операция запроса в LINQ
LINQ to SQL
Работа с реляционными данными по технологии ADO.NET
Работа с реляционными данными по технологии LINQ to SQL
Отображение LINQ to SQL
ADO.NET Entity Framework
Преимущества приложений ADO.NET Entity Framework
Компоненты Entity Framework
Entity Data Model
Архитектура Entity Framework
Проблемно-ориентированное проектирование
Основные понятия DDD
Основные аспекты DDD
Архитектурный аспект DDD
1.24M
Категория: Базы данныхБазы данных

Проектирование баз данных и работа с ними веб-приложений. (Лекция 8)

1. Современные веб-технологии

Подробный курс
Современные
веб-технологии
Проектирование баз данных и
работа с ними Веб-приложений.
LINQ, ADO.NET Entities, DDD

2. LINQ

Integrated Query (LINQ) – проект
Microsoft по добавлению синтаксиса языка
запросов, напоминающего SQL, в языки
программирования платформы .NET
Framework
LINQ выпущен вместе с Visual Studio 2008 в
конце ноября 2007 года.
Запрашиваемые данные могут быть
представлены в форме:
Language
XML (запросы LINQ к XML)
баз данных (LINQ к SQL, LINQ к наборам данных
и LINQ к экземплярам)
объектов (LINQ к объектам) и т.д.
2

3. Архитектура LINQ

C#
Другие языки
Visual Basic
.NET Language Integrated Query (LINQ)
Источники данных с поддержкой LINQ
ADO.NET с поддержкой LINQ
LINQ –
Объекты
LINQ –
Наборы
данных
LINQ –
SQL
LINQ –
Объекты
LINQ –
XML
<person>
<firstName>Иван
</firstName>
<lastName>Иванов
</lastName>
</person>
Объектные
Реляционные
XML
3

4. Примеры написания запроса LINQ на языке C#

Интегрированный
запрос
var contacts =
from c in customers
where c.State == “WA”
select new { с.Name, c.Phone };
Типизирование
переменной
Лямбдавыражение
var contacts =
customers
.Where(c => c.State == “WA”)
.Select (c => new { с.Name, c.Phone });
Методырасширения
Анонимные
типы
Упрощенная
инициализация
объекта
4

5. Операция запроса в LINQ

Источник: Введение в запросы LINQ ,
http://msdn.microsoft.com/ru-ru/library/bb397926.aspx
5

6. LINQ to SQL

to SQL – простая, но достаточно мощная
система объектно-реляционного отображения
(ORM)
LINQ to SQL позволяет производить
отображение реляционных данных на
объектную модель
LINQ to SQL поддерживает все основные
возможности, необходимые для разработчиков,
на SQL:
LINQ
Выбор
Вставка
Обновление
Удаление
6

7. Работа с реляционными данными по технологии ADO.NET

SqlConnection c = new SqlConnection(…);
c.Open();
SqlCommand cmd = new SqlCommand(
"SELECT c.Name, c.Phone
FROM Customers c
WHERE c.City = @p0");
cmd.Parameters.AddWithValue("@p0", "London");
DataReader dr = c.Execute(cmd);
while (dr.Read()) {
string name = dr.GetString(0);
string phone = dr.GetString(1);
DateTime date = dr.GetDateTime(2);
}
dr.Close();
Запрос в
кавычках
Аргументы без
строгих границ
Нетипизированные
возвращаемые
значения
Нет ошибок
времени
компиляции
7

8. Работа с реляционными данными по технологии LINQ to SQL

public class Customer { … }
public class Northwind : DataContext
{
public Table<Customer> Customers;

}
Northwind db = new Northwind(…);
var contacts =
from c in db.Customers
where c.City = "London"
select new { c.Name, c.Phone };
Объектное
описание
данных
Таблицы описаны
как коллекции
Строго типизированное
соединение
Интегрированный
синтаксис запросов
Строго типизированные
возвращаемые значения
8

9. Отображение LINQ to SQL

Database
DataContext
Table
Class
View
Class
Column
Field / Property
Relationship
Field / Property
Stored Procedure
Method
9

10. ADO.NET Entity Framework

Framework (EF) – объектноориентированная технология доступа к
данным, является object-relational mapping
(ORM) решением для .NET Framework от
Microsoft
Возможность взаимодействия посредством
LINQ to Entities и с использованием Entity SQL
Используется ADO.NET Data Services и связка
из Windows Communication Foundation и
Windows Presentation Foundation
ADO.NET Entity
10

11. Преимущества приложений ADO.NET Entity Framework

Могут
работать концептуальной моделью в
терминах предметной области
Освобождаются от жестких зависимостей от
конкретного ядра СУБД или схемы хранения
Сопоставления между концептуальной
моделью и схемой, специфичной для
конкретного хранилища
Возможность работы с согласованной моделью
объектов приложения, которая может быть
сопоставлена с различными схемами хранения
Несколько концептуальных моделей могут
быть сопоставлены с единой схемой хранения
Поддержка LINQ
11

12. Компоненты Entity Framework

Модель
Entity Data Model (EDM)
Компонент Object Services
Компонент LINQ to Entities
Язык Entity SQL
Поставщик EntityClient
Компонент метаданных ADO.NET
Набор средств, которые создают
сопоставления и разделяемые классы,
представляющие сущности концептуальной
модели
Поставщик данных SqlClient
12

13. Entity Data Model

SSDL
MSL
CSDL
Бизнесэлемент
Концептуальный
Объект
Объект
Сопоставление
Логическое хранилище
Таблица Таблица Таблица
Реляционные
данные
13

14. Архитектура Entity Framework

Сущность
SQLзапроса
LINQ
To
Entities
IEnumerable
<T>
Службы объектов
EDM
Концептуальная
модель
Сущность
SQLзапроса
Дерево
команд
EntityDataReader
Сопоставение
Поставщик данных EntityClient
Тип хранения
Дерево
команд
DBDataReader
Поставщик данных ADO.NET
Источник данных
14

15. Проблемно-ориентированное проектирование

Проблемно-ориентированное проектирование
(Domain-Driven Design, DDD) является подходом к
разработке программного обеспечения для решения
сложных задач, глубоко связывающем реализацию
программной систем с развивающейся моделью
бизнес-концепций
Свойства DDD:
фокусировка проекта на основной проблемной области
(домене) и бизнес-логике этой области
базирование всего проектирования на модели
введение творческого сотрудничества между
техническими экспертами и экспертами в проблемной
области, чтобы максимально понять концептуальную
суть проблемы
15

16. Основные понятия DDD

Домен
(проблемная область)
Модель
Общеупотребительный язык (Ubiquitous
Language)
Контекст
16

17. Основные аспекты DDD

DDD
Модель
Архитектура
Дизайн/
проектирование
17

18. Архитектурный аспект DDD

Сущность
(Entity)
Объект со значением (Value Object)
Агрегат (Aggregate)
Службы (Services)
Репозитории (Repositories)
Фабрики (Factories)
18
English     Русский