Обзор технологии доступа к данным

Содержание

Слайд 2

Содержание

LINQ
ADO.NET Entity Framework
ADO.NET Data Services Codename ‘Astoria’
Sync Framework
Общая картина подхода Microsoft к

Содержание LINQ ADO.NET Entity Framework ADO.NET Data Services Codename ‘Astoria’ Sync Framework
технологиям доступа к данным

Слайд 3

История

OLE DB(1.0 – 1992) – низкоуровневый API
OLE DB - COM API
ADO –

История OLE DB(1.0 – 1992) – низкоуровневый API OLE DB - COM
объектная модель - Recordset
ADO.NET – объектная модель .NET - Dataset
MCAD (Windows DAC) -1996
Microsoft Jet Database Engine
DB-Library
Data Access Objects (DAO)
Remote Data Objects (RDO)

Слайд 4

Доступ к данным

SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");
SqlCommand catCMD =

Доступ к данным SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"); SqlCommand
nwindConn.CreateCommand();
catCMD.CommandText = "SELECT CategoryID, CategoryName FROM Categories WHERE CategoryName LIKE ‘B%’ ORDER BY 1“;
nwindConn.Open();
SqlDataReader myReader = catCMD.ExecuteReader();
while (myReader.Read())
{
Console.WriteLine("\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1));
}
myReader.Close();
nwindConn.Close();

DataSet DS=new DataSet();
XQueryNavigatorCollection oXQ = new XQueryNavigatorCollection();
string strXML = "";
string fileName1="c:\\Test\\T1.xml";
string alias1 = "MyDataTest.xml";
oXQ.AddNavigator( fileName1, alias1 );
string strQuery = " { " +
" let $bb := document(\"MyDataTest.xml\")/*/* " +
" let $cc := document(\"MyDatattt.xml\")/*/* " +
" for $c in $cc " +
" for $b in $bb " +
" where $c/kod = $b/kod " +
" return

{ $b/nazv,$b/dat,$c/naim }
" +
" } “ ;
XQueryExpression xExpression = new XQueryExpression(strQuery);
strXML = xExpression.Execute(oXQ).ToXml();
StringReader strReader = new StringReader(strXML);
XmlTextReader reader = new XmlTextReader(strReader);
DS.ReadXml(reader);
DataGrid1.DataSource = DS.Tables[0];
DataGrid1.DataBind();

Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
Dim expr As System.Xml.XPath.XPathExpression = nav.Compile( "//Publisher[. = 'MSPress']/parent::node()/Title" )

Слайд 5

Типовые уровни при работе с данными

Концептуальный
Бизнес сущности и логика
Объекты и объектные коллекции
Логический
Реляционное

Типовые уровни при работе с данными Концептуальный Бизнес сущности и логика Объекты
представление
Таблицы, отношения
junction tables
Физический
физическое хранение и манипулирование
страницы, экстенты, индексы ограничения (constraints) …

Concetual

Physical

Logical

Слайд 6

Сложности в работе с данными

Нетипизированные острова
разные для каждого источника
специфические знания для каждого

Сложности в работе с данными Нетипизированные острова разные для каждого источника специфические
источника
отсутствие проверок на этапе компиляции
сложность в поддержке …
… и даже нет IntelliSence ☺

Проблема:
Data != Objects

Dataset – реляционное представление в объектном виде
Скрытые знания о структуре хранения и объектно–реляционном маппинге (ORM) в виде строк
Data Access Layer - спасение?

Слайд 7

Решение – основные идеи

Типизированные запросы
Типизированные результаты
Объектное представление схемы хранения
Общее решение для

Решение – основные идеи Типизированные запросы Типизированные результаты Объектное представление схемы хранения
целого ряда продуктов
Использование преимуществ ADO.NET
Создание концептуальной объектной модели
Явное декларативное представление схемы объектно–реляционного маппинга (ORM) между концептуальной моделью и моделью хранения

LINQ
Entity Framework

Слайд 8

Language Integrated Query

Единообразные типизированные запросы к любому источнику данных
Методы расширения интерфейса IEnumerable

Language Integrated Query Единообразные типизированные запросы к любому источнику данных Методы расширения
(Select, OrderBy, GroupBy, Join. Where)
Возвращаемый результат как объектная коллекция (IEnumerable )
Intellisence – проверка на этапе компиляции
Специальный синтаксис выражений запросов

Слайд 9

C# 3.0

var contacts =
from c in customers
where c.State == "WA"

C# 3.0 var contacts = from c in customers where c.State ==
select new { c.Name, c.Phone };

var contacts =
customers
.Where(c => c.State == "WA")
.Select(c => new { c.Name, c.Phone });

Extension methods

Lambda expressions

Query expressions

Object initializers

Anonymous types

Local variable type inference

Слайд 10

VBA 9

Dim contacts =
From c In customers _
Where c.State =

VBA 9 Dim contacts = From c In customers _ Where c.State
"WA“ _
Select c.Name, c.Phone

Dim contacts = _
customers _
.Where(Function (c) c.State = "WA")_
.Select(Function(c) New With { c.Name, c.Phone })

Extension methods

Lambda expressions

Query expressions

Object initializers

Anonymous types

Local variable type inference

Слайд 11

Проект LINQ

.NET Language Integrated Query

Проект LINQ .NET Language Integrated Query

Слайд 12

LINQ

Поддерживает модель провайдеров, существуют реализации:
LINQ to NHibernate
LINQ to Amazon
SharePoint, ….
Развивается в направлении

LINQ Поддерживает модель провайдеров, существуют реализации: LINQ to NHibernate LINQ to Amazon
параллелизма (manycore) –
PLINQ

Слайд 13

Entity Framework

Инфраструктура формирования концептуального представления данных с помощью сущностей (Entities)
Реализация классических задач

Entity Framework Инфраструктура формирования концептуального представления данных с помощью сущностей (Entities) Реализация
ORM
Абстрагирование от схемы хранения
Гибкий маппинг

Слайд 14

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

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

Слайд 15

Гибкий маппинг

Таблица на иерархию

Гибкий маппинг Таблица на иерархию

Слайд 16

Гибкий маппинг. Таблица на тип

Гибкий маппинг. Таблица на тип

Слайд 17

Гибкий маппинг. Таблица на класс

Гибкий маппинг. Таблица на класс

Слайд 18

Гибкий маппинг. Разделение сущности

Гибкий маппинг. Разделение сущности

Слайд 19

Гибкий маппинг. Хранимые процедуры

Гибкий маппинг. Хранимые процедуры

Слайд 20

Гибкий маппинг. Хранимые процедуры

Гибкий маппинг. Хранимые процедуры

Слайд 21

Гибкий маппинг. Создание представлений (QueryView)

Гибкий маппинг. Создание представлений (QueryView)

Слайд 22

Гибкий маппинг. Создание представлений (Defining Query)

Гибкий маппинг. Создание представлений (Defining Query)

Слайд 23

Entity Framework - текущее состояние
Доступен в Beta 3
RTM вышел во второй половине

Entity Framework - текущее состояние Доступен в Beta 3 RTM вышел во
2008
Провайдеры третьих производителей для различных баз данных
В течение 3 месяцев после выхода (RTM)
Oracle, IBM DB2, MySQL, PostgreSQL, Informix, Ingres, Sybase, SQLite, SQL Anywhere, Progress …
Firebird

Слайд 24

Роль Entity Framework

Единый движок концептуального представления и ORM для ряда ключевых

Роль Entity Framework Единый движок концептуального представления и ORM для ряда ключевых продуктов Microsoft
продуктов Microsoft

Слайд 25

Сравнение LINQ и Entity Framework

Единообразные запросы
Единообразные типизированные запросы к любому источнику
Типизированные результаты
LINQ

Сравнение LINQ и Entity Framework Единообразные запросы Единообразные типизированные запросы к любому
to SQL - типизированное представление логической схемы данных 1:1 (ORM)
LINQ to SQL – возможности переименования объектов данных и поддержка TPH

Гибкий маппинг
Создание концептуального объектного уровня, абстрагированного от логики хранения
Типизированное представление концептуальной схемы с гибким маппингом - полноценный ORM

LINQ Entity Framework
Основное назначение
Возможности маппинга

Слайд 26

.NET Language Integrated Query

Entity Framework

Концептуальная
схема (CSDL)

Маппинг (MSL)

Схема
хранения (CSDL)

ADO.NET
Реляционные источники

LINQ +

.NET Language Integrated Query Entity Framework Концептуальная схема (CSDL) Маппинг (MSL) Схема
Entity Framework
Имя файла: Обзор-технологии-доступа-к-данным-.pptx
Количество просмотров: 158
Количество скачиваний: 1