Your Data Any Place, Any Time Data Application Development Lương Đình Dũng Technology Specialist – Database Platform Microsoft Vietnam LLC 0986.844.624 | i-dzungl@microsoft.com SQL Server 2008 Microsoft Data Platform Productivity Challenges Translating logical database schemas to business objects Incorporating diverse data access syntax for multiple data sources Creating and maintaining large, complex applications Productivity Solutions EDM • Conceptual data model • Faster development • Improved maintainability LINQ • Data is a first class object • Data source neutral syntax • Compile-time validation Visual Studio • Design time IntelliSense • Full cycle team development • EDM and LINQ integration Comprehensive Data Platform Challenges Accessing data in diverse stores throughout the enterprise Implementing complex data processing functionality Extending the reach of data applications Comprehensive Data Platform Solutions Broad Connectivity Rich Programmability • ODBC, OLE DB, and ADO • ADO.NET & Entity Framework • XML, JDBC, PHP • Native query syntax (LINQ) • Conceptual data model (EDM) • SQL Server integrated CLR Your Data, Any Time, Any Place • Range of data access options • Support for occasionally connected solutions Scalability Challenges Storing high volumes of data Supporting diverse types of data Building scalable applications and services Scalability Solutions Enterprise-Scale Data Store Broad Data Type Support Application Scalability • SQL Server 2008 Editions to suit all requirements • Robust data management that grows with your business • Relational data • CLR types • Spatial data • Filestreams • XML • ADO.NET Entity Framework • Service Broker • SQL Compact Edition • Visual Studio Team System Agenda Language Integrated Query (LINQ) ADO.Net Entity Framework Microsoft Synchronization Framework Agenda Language Integrated Query (LINQ) ADO.Net Entity Framework Microsoft Synchronization Framework Language Integrated Query (LINQ) Use LINQ to •Simplify data access code •Enhance developer productivity •Create flexible data access solutions Data Access Programming Challenges Multiple, disparate data stores • Developers must learn data store-specific query syntax Data access code is mixed with application code • Difficult to debug and maintain • Code is often complex and verbose Data model mismatch • Data schemas do not match application object models Introduction to LINQ Language Integrated Query (LINQ) • Extensions for .NET languages • Native syntax for query operations • Strong typing and object-orientation for data • Implementations for disparate data sources Data Access Code Today class DataAccess{ static void GetNewOrders(DateTime date, int qty) { using (SqlConnection con = new SqlConnection(Settings.Default.NWDB)) { con.Open(); Query syntax SqlCommand cmd = con.CreateCommand(); is sourcecmd.CommandText = @" specific and SELECT o.OrderDate, o.OrderID, SUM(d.Quantity) as Total must be FROM Orders AS o embedded LEFT JOIN [Order Details] AS d ON o.OrderID = d.OrderID into WHERE o.OrderDate >= @date application GROUP BY o.OrderID code HAVING Total >= 1000"; cmd.Parameters.AddWithValue("@date", date); DbDataReader r = cmd.ExecuteReader(); while (r.Read()) { Console.WriteLine("{0:d}:\t{1}:\t{2}", r["OrderDate"], r["OrderID"], r["Total"]); } Data values are contained } in a data structures, } which must be navigated } Modeling Databases using LINQ to SQL The DataContext Class .NET classes that represent the entities and database relationships A custom DataContext class is generated for each LINQ to SQL designer file It has properties that represent each Table modeled within the database, as well as methods for each Stored Procedure we added LINQ to SQL Code Examples Query data Update data Insert data LINQ to SQL Code Examples (cont…) Delete data Calling a Stored Proc LINQ to SQL Code Examples (cont…) Retrieve data with server-side paging Benefits of LINQ Increased developer productivity Flexible data access for the enterprise Simpler data access code LINQ LINQ Flexibility • Strongly-typed LINQ access to Microsoft ADO.NET Entity Framework • Strongly-typed LINQ access to SQL Server • Strongly-typed LINQ access to XML data LINQ to SQL LINQ to Entities LINQ to XML LINQ to DataSet • Strongly-typed LINQ access to DataSet functionality Language Integrated Query Agenda Language Integrated Query (LINQ) ADO.Net Entity Framework Microsoft Synchronization Framework ADO.NET Entity Framework Today’s Challenges Logical Database Schema • Developers need to understand the logical database schema in order to program against it Disparate Data Sources • Developers need to know multiple languages and dialects to program against disparate data sources Normalized Data • Developers need to write complex code to work with business object whose data is spread across many tables and rows ADO.NET Entity Framework Solutions Entity Data Model • Developers can use the Entity Data Model to transform relational data into conceptual entities LINQ and Entity SQL • Developers can use LINQ and Entity SQL to write data access code in a .NET programming language Entities • Developers can work with entities instead of tables and rows to simplify data access code An Adaptive Framework Work with Conceptual Business Objects Map tables in the data source to entities in the conceptual model Map multiple tables to a single entity and map many-to-many relationships dbo.Customer dbo.CustomerDetails Use complex types to represent related objects Customer An Adaptive Framework Use Inheritance with Data Conceptual model that supports inheritance • Developers are familiar with inheritance • The ADO.NET Entity Framework brings inheritance to the conceptual model • The ADO.NET Entity Framework supports three types of inheritance • Table per hierarchy • Table per subclass • Table per concrete type An Adaptive Framework Customize Client Views Customize the automatically generated client views to meet your business requirements • Use an Entity SQL WHERE clause to return a subset of the data SELECT P FROM AW.Production.Product AS P WHERE p.ProductCategory.Name = 'Road Bikes' • Use a DefiningQuery to specify the required data using the native query language <EntitySet Name="Product" EntityType="AW.Product"> <DefiningQuery> SELECT p.Name, p.ProductNumber, p.ReorderPoint FROM Product as p WHERE p.DaysToManufacture > 1 </DefiningQuery> </EntitySet> An Extensible Framework Customize Modeling Files Use a schema-aware XML editor to add metadata or modify properties in the automatically generated modeling and mapping files CSDL <FunctionImport Name="GetOrderDetails" EntitySet="SalesOrderDetail" ReturnType="Collection(AdventureWorksModel.SalesOrderDetail)"> <Parameter Name="SalesOrderHeaderId" Type="Int32" Mode="in"> </Parameter> </FunctionImport> MSL <FunctionImportMapping FunctionImportName="GetOrderDetails" FunctionName="AdventureWorksModel.Store.GetOrderDetails"/> An Extensible Framework Customize Generated Code Add business logic to data access code • Extend the partial classes that the tools generate • Create custom implementations of the partial classes’ base interfaces [Serializable()] public partial class Customers : Cust { // autogenerated code [Serializable()] } public partial class Customers : Cust { // your code } An Evolutionary Framework Visual Studio 2008 Tools Microsoft® Visual Studio® 2008 provides Entity Framework Tools to work with models and mappings Entity Designer to generate and validate models Entity Mapping Tool to define entities and associations Entity Model Browser to visualize the model An Evolutionary Framework Familiar Data Provider Functionality Continue to use the ADO.NET data provider model Use the EntityClient data provider to query against conceptual models An Evolutionary Framework Write Better Code Query and return results as strongly typed CLR data objects • By using LINQ or Entity SQL LINQ var newPeople = from p in aw.SalesPeople where p.HireDate > hireDate select p; foreach(SalesPerson p in newPeople) { Console.WriteLine("{0}\t{1}", p.FirstName, p.LastName); } Use IntelliSense® • IntelliSense supports strongly typed objects An Evolutionary Framework Simplify Maintenance When using entities, schema changes do not always result in changes to the application code Upgrade to more powerful editions of SQL Server™ with minimal changes to code ADO.Net Entity Framework Adaptive Extensible Evolutionary • Map tables to entities • Map many-to-many relationships • Use inheritance • Build custom data views • Customize modeling files • Customize generated code • Simplify modeling and mapping • Use new functionality in a familiar way • Write better code • Simplify application maintenance ADO.Net Entity Framework Agenda Language Integrated Query (LINQ) ADO.Net Entity Framework Microsoft Synchronization Framework Synchronization Scenarios Seamless online/offline solutions (e.g. Microsoft Office Outlook) Rich roaming and sharing (e.g. mobile devices, phones, media players) Resilient Web services with offline capabilities Client-side storage for line of business applications The Challenges of Synchronization Profusion of devices and data services Multiple formats and protocols Complex content flow Increased mobility and offline scenarios Introducing the Microsoft Sync Framework Flexible sync solutions Comprehensive sync capabilities Productive sync framework Microsoft Sync Framework Microsoft Sync Framework Goals Provide a common, reusable and optimized runtime for building synchronization solutions Facilitate content flow across solutions by standardizing on the synchronization metadata Simplify the actual development of sync solutions by providing store-specific and end-to-end components for common scenarios Microsoft Sync Framework Functionality Metadata-based synchronization Support for a variety of sync topologies Peer-to-peer Hub/spoke Full-mesh Enables virtually any device, service, application, or platform to perform full, multi-master synchronization Filter sync support Sync criteria (e.g. “4 star music”, “Mail received in the last 2 days”) Sync a subset of fields (e.g. “FirstName”) MSF Architecture Core Sync Runtime • Metadata services for synchronization, sharing, conflict resolution, sync granularity, and sync session management • Core support for Simple Sharing Extensions (SSE) for RSS and ATOM Sync Provider Framework • Extensible framework used by developers to create sync providers for devices and applications • The framework supports a range of participant levels Store-Specific Components • Built-in sync capability for common stores and protocols including Synchronization Services for ADO.NET, SQL Server Compact Metadata Store, File and Folder Sync Provider, and ADO.NET data Services Universal Content Flow Add synchronization capabilities to virtually any Device Application Service Synchronize any kind of data Use virtually any protocol Sync Provider Participation Level Full Participants • Capable of peer-to-peer/full mesh sync Partial Participants • Store information but do not understand most of the sync metadata (e.g. a USB keychain, legacy phone, media device). Despite being very easy to develop even on endpoints that do not host the MSF engine, these providers can participate in all multi-master content flow scenarios. Simple Participants • Lack the ability to detect changes and that lack the ability to store metadata. MSF has services to allow data from these participants to flow within the ecosystem on behalf of a fully featured participant/provider. Anchor-Based Providers • Rely on a simple tick-count based enumeration mechanism for their change detection mechanism (e.g. timestamps, tick counts, etc.) Quickly Build and Integrate Sync Solutions • Simple metadatabased abstraction • Easy development model Add synchronization capabilities with minimal modifications Use built-in integration with popular Microsoft technologies • Microsoft .NET Framework • SQL Server 2008 • Windows File System • Add synchronization to virtually any device, application, or service Extend synchronization with custom sync providers Licensing MSF is Free to use on Microsoft Windows • Add support for non-Microsoft participants through applicable licenses Microsoft Sync Framework • A comprehensive, flexible, and productive platform for developing a synchronization ecosystem • Add synchronization to virtually any device, application or service • Synchronize any kind of data over virtually any protocol Microsoft Synchronization Framework © 2007 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.