140 likes | 426 Views
Сравнение ADO.NET Entity Framework с NHibernate. Роман Здебский Эксперт по технологиям разработки ПО Microsoft rzdebski@microsoft.com http://blogs.msdn.com/roman. NHibernate. ORM solution for the Microsoft .NET NHibernate free open source - LGPL
E N D
Сравнение ADO.NET Entity Framework с NHibernate Роман Здебский Эксперт по технологиям разработки ПО Microsoft rzdebski@microsoft.com http://blogs.msdn.com/roman
NHibernate • ORM solution for the Microsoft .NET • NHibernate free open source - LGPL • NHibernateпорт Java O/R маппераHibernate • NHibernate 1.0 - 2005 • NHibernate 1.2.1, released in November 2007, • support for .NET 2.0, • stored procedures, • generics, and • nullable types • NHibernate 2.0 - August 23, 2008. Схож с Hibernate 3.2 • POCO • HQL – строковые запросы • LINQ provider RTM planned for 2.1 (hopefully)
Language Integrated Query • Единообразные типизированные запросы к любому источнику данных • Методы расширения интерфейса IEnumerable (Select, OrderBy, GroupBy, Join, Where) • Возвращаемый результат как объектная коллекция (IEnumerable<T>) • Intellisense, проверка на этапе компиляции • Специальный синтаксис выражений запросов
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
Entity Framework • Релиз – 11 августа 2008 • .NET Framework 3.5 SP1 • Полная интеграция с • .NET • Visual Studio IDE • Выделение двух функциональных уровней • Маппинг – Entity Data Model • ObjectContext – управление ссылками на инстанции объектов • Встроенная полная поддержка LINQ
Начало проекта NHibernate ADO.NET Entity Framework • Скачать дистрибутив, скопировать NHibernate.dll • Добавить конфигурацию источника в web.configили hibernate.cfg.xmlконфигурацию источника • Создать POCO объекты • Создать к ним xml mapping<имя>.hbm.xml • Инстанциируем сессию http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/quickstart.html#quickstart-intro
Entity Framework интеграция с инструментальной средой Демонстрация
<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
Entity Framework + Web + ADO.NET DataServices Демонстрация
<book> <title/> <author/> <year/> <price/> </book> Microsoft SQL Server, Oracle, DB2, MySQL… XML Объекты ADO.NET Data Services Клиент .NET Language Integrated Query Client LINQ Rest Provider HTTP Сервер REST API Другие VB 9.0 C# 3.0 EntityFramework ADO.NET LINQ toDataSets LINQ toEntities LINQ toSQL LINQ toObjects LINQ toXML
Спасибо за внимание Роман Здебский Эксперт по технологиям разработки ПО Microsoft rzdebski@microsoft.com http://blogs.msdn.com/roman