what's new for data?
DESCRIPTION
TRANSCRIPT
Eric NelsonDeveloper & Platform GroupMicrosoft [email protected] http://blogs.msdn.com/ericnel http://twitter.com/ericnel
RelationalImproved
XMLUDTs
NewFilestreamHierarchy IDDate & TimeSpatial dataSparse columns and wide tablesFiltered indexesChange trackingTable parameters to SP callsResource governorSP control and monitoringDatabase compressionDeclarative management...
SQL Server Integration Services
VSTA replaces VSAADO.NETPerformanceMerge...
Reporting Services“IIS free”TablixNew designer...
BICube designDeisgn alertsPerformance...
What is it?Technique for working with relational tables as if they were objects in memoryIntention is to hide away the complexity of the underlying tables and give a uniform way of working with data
Why use it?ProductivityRetain database independence
NotesThere are many ORMs for .NET developers already in existence. E.g.
LLBLGen Pro http://www.llblgen.com/Nhibernate http://www.hibernate.org/343.htmlEntitySpaces http://www.entityspaces.net/Portal/Default.aspx
Objects vs Classes vs Entities
What is it?Tools and services to create an Entity Data Model
EDM gives ORM to SQL Server, Oracle, DB2 etc
Tools and services for consuming an Entity Data Model
Why use it?ProductivityComplex mapping between entities and database tablesWorks great with ADO.NET Data Services
NotesStrategic but just released...
Application modelMapped to a persistence store
Comprised of three layers:
Conceptual (CSDL)Mapping (MSL)Storage (SSDL)
Database agnosticComprised of:
EntitiesAssociationsFunctions
ConceptualConceptual
MappingMapping
StorageStorage
Entity Data ModelEntity Data Model
Entity ClientEntity SQL
Object ServicesEntity SQLLINQ To Entities
Familiar ADO.NET object model:EntityCommandEntityConnectionEntityDataReaderEntityParameterEntityTransaction
Text-based resultsRead-onlyUses Entity SQL
Queries materialized as ObjectsObjectContextObjectQuery<T>
Built on top of Entity ClientTwo query options:
Entity SQLLINQ
Runtime services:Unit of workIdentity trackingEager/explicit loading
LINQ To EntitiesLINQ To Entities
Object ServicesObject Services
Entity SQLEntity SQL
Entity ClientEntity Client
ADO.NET ProviderADO.NET Provider
Vendor DB Support
Microsoft SQL ServerOracle Sample, Generic Sample
Devart Oracle, MySQL, Postgress
Phoenix SQLite
IBM DB2, Informix Dynamic Server
MySQL AB MySQL
Npgsql PostgreSQL
OpenLink Many via OpenLink ODBC or JDBC
DataDirect Oracle, Sybase, SQL Server, DB2
Firebird Firebird
LINQ to SQL LINQ to Entities
Database Support
SQL Server Many
Object Relational Mapping Capabilities
Simple Complex
Requires Attributed .NET Code
No Yes
Status Released Just Released
LINQ to SQLvar products = from prod in db.Product where prod.Color == "Blue" select prod;
LINQ to Entitiesvar products = from prod in db.Product where prod.Color == "Blue" select prod;
In general – LINQ to Entities does more – but not always!Only migration that will ever happen is LINQ to SQL migration to LINQ to Entities
What is it?HTTP access to an object model exposed as RESTful Web ServicesData and/or methodsData returned using ATOM or JSONRead/Write
Why use it?Easy to expose data over the internet accessible by any client
Data Access LayerData Access LayerData Access LayerData Access Layer
Entity Entity FrameworkFramework
Entity Entity FrameworkFramework
Relational
database
Relational
database Other sourcesOther
sources
Data Services RuntimeData Services RuntimeData Services RuntimeData Services Runtime
Hosting/HTTP ListenerHosting/HTTP ListenerHosting/HTTP ListenerHosting/HTTP Listener
CustomCustomCustomCustom
Iqueryable/IenumerableIqueryable/Ienumerable [+ IUpdatable][+ IUpdatable]
HTTPHTTPHTTPHTTP
Resources
Res 1
Res 2
Res 3
Res 4
HTTP RequestURL
VERB
Payload
HTTP Response
Status
GETPOSTPUT
DELETEXML JSON
Payload
XML JSON
Provide a type with public properties which are;
IQueryable<T>, IEnumerable<T>
Also get write access if your type implements;
IUpdatable
Works well with generated code from;ADO.NET Entity Framework (ObjectContext)LINQ to SQL (DataContext*)
http://blogs.msdn.com/ericnel - all the linksGeneral
ADO.NET Team Blog http://blogs.msdn.com/adonetMike in our team http://www.miketaulty.com ( search Entity or LINQ )Data Platform Developer Centre http://msdn.microsoft.com/en-gb/data/default.aspx
ADO.NET Entity FrameworkEF DM http://blogs.msdn.com/dsimmons FAQ http://blogs.msdn.com/dsimmons/pages/entity-framework-faq.aspx Entity Framework Design http://blogs.msdn.com/efdesign/default.aspx
ADO.NET Data ServicesTeam blog http://blogs.msdn.com/astoriateam
© 2008 Microsoft Ltd. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the
date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Entity Entity ClientClient
Entity Entity Data Data ModelModel
Entity Entity Data Data ModelModel
SSDLSSDLSSDLSSDL
SQLSQLSQLSQL
OraclOraclee
OraclOraclee
OtherOtherOtherOther
CSDLCSDL MSLMSL
Object Object ServiceService
ss
ESQLESQL““select o from select o from
orders”orders”
LINQ to LINQ to EntitiesEntities
““from o in from o in orders...”orders...”
ADO.NET Data ADO.NET Data servicesservices
Pro
vid
er
Pro
vid
er
Pro
vid
er
Pro
vid
er
Pro
vid
er
Pro
vid
er
SSDLSSDLSSDLSSDL
SSDLSSDL
HTTPHTTPHTTPHTTP CustomCustom
InterceptorInterceptorss
(Query, (Query, Update)Update)
Service Service Operations Operations (Methods)(Methods)
Entity Entity Data Data ModelModel
REpresentational State TransferServer-side resources identified by a URIAccess is over HTTP, verb tied to action
GET to read the value of a resourcePOST to create a new resourcePUT to update an existing resourceDELETE to delete a resource
Returned data is “plain” – XML or JSON
Is this “the death of SOAP”?