1 / 31

Технологии доступа к данным на платформе Microsoft.NET

Технологии доступа к данным на платформе Microsoft.NET. На основе доклада Романа Здебского на семинаре «Дни разработчика». Существующие проблемы LINQ ADO.NET Entity Framework. Содержание. Доступ к данным. Краткая ретроспектива. ODBC (1.0 –1992) – низкоуровневый API OLE DB – COM API

Download Presentation

Технологии доступа к данным на платформе Microsoft.NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Технологии доступа к данным на платформе Microsoft.NET На основе доклада Романа Здебского на семинаре «Дни разработчика»

  2. Существующие проблемы LINQ ADO.NET Entity Framework Содержание Доступ к данным

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

  4. Доступ к данным DataSet DS=new DataSet(); XQueryNavigatorCollectionoXQ = new XQueryNavigatorCollection(); string strXML = ""; string fileName1="c:\\Test\\T1.xml"; string alias1 = "MyDataTest.xml"; oXQ.AddNavigator( fileName1, alias1 ); string strQuery = "<NewDataSet> { " + " let $bb := document(\"MyDataTest.xml\")/*/* " + " let $cc := document(\"MyDatattt.xml\")/*/* " + " for $c in $cc " + " for $b in $bb " + " where $c/kod = $b/kod " + " return <Table> { $b/nazv,$b/dat,$c/naim } </Table> " + " }</NewDataSet> “ ; XQueryExpressionxExpression = new XQueryExpression(strQuery); strXML = xExpression.Execute(oXQ).ToXml(); StringReaderstrReader = new StringReader(strXML); XmlTextReader reader = new XmlTextReader(strReader); DS.ReadXml(reader); DataGrid1.DataSource = DS.Tables[0]; DataGrid1.DataBind(); SqlConnectionnwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"); SqlCommandcatCMD = nwindConn.CreateCommand(); catCMD.CommandText= "SELECT CategoryID, CategoryName FROM Categories WHERE CategoryName LIKE ‘B%’ ORDER BY 1“; nwindConn.Open(); SqlDataReadermyReader = catCMD.ExecuteReader(); while (myReader.Read()) { Console.WriteLine("\t{0}\t{1}", myReader.GetInt32(0), myReader.GetString(1)); } myReader.Close(); nwindConn.Close(); 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) …

  6. Сложности в работе с данными Проблема: Data != Objects • Нетипизированные острова • разные для каждого источника • специфические знания для каждого источника • отсутствие проверок на этапе компиляции • сложность в поддержке … • … и даже нет IntelliSence  • Dataset – реляционное представление в объектном виде • Скрытыезнания о структуре хранения и объектно–реляционном маппинге (ORM) в виде строк • Data Access Layer - спасение?

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

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

  9. C# 3.0 Query expressions var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone }; Local variable type inference Lambda expressions var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone }); Extension methods Object initializers Anonymous types

  10. VB 9 Query expressions Dim contacts = From c In customers _ Where c.State = "WA“ _ Select c.Name, c.Phone Local variable type inference Lambda expressions Dim contacts = _ customers _ .Where(Function (c) c.State = "WA")_ .Select(Function(c) New With { c.Name, c.Phone }) Extension methods Object initializers Anonymous types

  11. <book> <title/> <author/> <year/> <price/> </book> XML Объекты Реляционные источники Проект LINQ .NET Language Integrated Query C# 3.0 VB 9.0 Другие LINQ toDataSets LINQ toEntities LINQ toObjects LINQ toXML LINQ toSQL

  12. LINQ Демонстрация Краткий обзор

  13. LINQ текущий статус • Вышел (RTM) в ноябре 2007 года вместе с Visual Studio 2008 и .NET Framework 3.5 • Поддерживает модель провайдеров, существуют реализации: • LINQ to NHibernate • LINQ to Amazon • SharePoint, …. • Развивается в направлении параллелизма – • PLINQ

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

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

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

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

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

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

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

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

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

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

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

  25. ADO.NET Entity Framework Демонстрация Основные возможности

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

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

  28. Сравнивая LINQ и Entity Framework Основноеназначение LINQ Единообразныезапросы Entity Framework Гибкий маппинг Создание концептуального объектного уровня, абстрагированного от логики хранения Типизированное представлениеконцептуальной схемы с гибким маппингом – полноценный ORM • Единообразные типизированные запросы к любому источнику • Типизированные результаты • LINQ to SQL -Типизированное представление логической схемы данных 1:1ORM • LINQ to SQL – возможности переименований объектов данных и поддержка TPH Возможности маппинга

  29. <book> <title/> <author/> <year/> <price/> </book> Microsoft SQL Server, Oracle, DB2, MySQL… XML Объекты LINQ + Entity Framework Реляционные источники .NET Language Integrated Query EntityFramework Концептуальная схема (CSDL) Маппинг (MSL) Схема хранения (CSDL) C# 3.0 VB 9.0 Другие ADO.NET LINQ toEntities LINQ toDataSets LINQ toSQL LINQ toObjects LINQ toXML

  30. Ссылки по теме • LINQhttp://msdn2.microsoft.com/en-us/netframework/aa904594.aspx • ADO.NET Entity Framework • http://msdn.microsoft.com/data • http://blogs.msdn.com/adonet/ • http://blogs.msdn.com/data/

  31. Спасибо за внимание!

More Related