29
Language Integrated Query Make query a part of the language Component of .NET Framework 3.5 Shipped with Visual Studio 2008

Language Integrated Query Make query a part of the language Component of.NET Framework 3.5 Shipped with Visual Studio 2008

Embed Size (px)

Citation preview

Page 1: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Language Integrated Query Make query a part of the language Component of .NET Framework 3.5 Shipped with Visual Studio 2008

Page 2: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Linq is short for Language Integrated Query. If you are used to using SQL to query databases, you are going to have something of a head start with Linq, since they have many ideas in common.

Page 3: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

LINQ provides a high-level abstraction of virtually any data and emulates the query operations of the relational model.

Page 4: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Language Integrated Query (LINQ, pronounced "link") is a Microsoft .NET Framework component that adds native data querying capabilities to .NET languages.

Page 5: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

LINQ (often overheard pronounced as "link") is a step in the evolution of data access. It is a programming model that brings a much needed uniformity to accessing data from files, XML, database, registry, event log

Page 6: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Allows to perform iterations on Collections

Main namespace is System.core

Page 7: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

C#var myCustomers = from c in customers where c.Region == "UK" select c;

Page 8: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Unified data accessSingle syntax to learn and remember

Strongly typedCatch errors during compilation

IntelliSensePrompt for syntax and attributes

Bindable result sets More evident when more complex filters

are present

Page 9: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

OthersOthersC#C# VB.NETVB.NET

.NET Language Integrated Query (LINQ).NET Language Integrated Query (LINQ)

LINQLINQto SQLto SQL

LINQLINQto Objectsto Objects

LINQLINQto XMLto XML

LINQLINQto Datasetsto Datasets

LINQLINQto Entitiesto Entities

LINQ data source providersLINQ data source providers

ADO.NET support for LINQADO.NET support for LINQ

Page 10: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

C#int[] nums = new int[] {0,4,2,6,3,8,3,1};double average = nums.Take(6).Average();var above = from n in nums where n > average select n;

Filtering process is easy because of the Intellisense feature

Page 11: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Use of Ienumerable <T> or Iqueryable<T> collection

Query any IEnumerable<T> sourceIncludes arrays, List<T>, Dictionary...

Instead of for each loops or iterative loops the condition of LINQ used along with Ienumerable helps in rapid data retrieval

Page 12: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Aggregate Conversion Ordering Partitioning Sets

AggregateAverageCountMaxMinSum

CastOfTypeToArrayToDictionaryToListToLookupToSequence

OrderByThenByDescendingReverse

SkipSkipWhileTakeTakeWhile

ConcatDistinctExceptIntersectUnion

and many others

Page 13: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

LINQ to dataset is build on the top of ADO.Net to simplify the tasks

Ensure that a reference System.Data.DataSetExtensions.dll is added

Typed dataset feture is present(Fields) Reshaping data with Anonymous type

feature

Page 14: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

What is the Entity Data Model?

Definition for your application model

Map between app model, database schema

Advanced mapping scenarios supported

One entity mapped across multiple tablesMultiple inheritance hierarchy mappingsMany-to-many without "link" table in model

Page 15: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

LINQ to SQL• Shipped with Visual Studio 2008 and .NET 3.5• Emphasis on rapid application development• Supports Microsoft SQL Server family of databases

LINQ to Entities• Will ship as an update to .NET 3.5• Offers a provider model for third-party databases• Designed for enterprise-grade data scenarios• Higher level of abstraction for programming

databases• Just one layer of the overall ADO.NET Entity

Framework

Page 16: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Converting LINQ queries to SQL• Compiler converts code into a LINQ expression

tree• LINQ to Entities converts LINQ expression tree

into a DbCommandTree based on mapping information

DbCommandTree expressed in terms of the database schema

• ADO.NET provider generates a DbCommand• LINQ to Entities executes the DbCommand,

assembles results into the structure(s) specified in the LINQ query

Page 17: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

EntityClient Provider

string "SELECT VALUE o FROM NorthwindEntities.Orders AS o " + "WHERE o.Customers.CustomerID = 'ALFKI'";

EntityCommand new EntityCommand(eSEntityDataReader =

while ( Console. ("{0} {1:d}", ["OrderID"], ["OrderDate"]);

Page 18: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008
Page 19: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Object-relational mappingRecords become strongly-typed objects

Data context is the controller mechanism

Facilitates update, delete & insert Translates LINQ queries behind the

scenes Type, parameter and injection safe

Page 20: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Instead of manipulating the database directly,developers manipulate the object model,which represents the database

For this,Windows application must be created Add new LINQ to SQL class items to the project Drag and drop tables and make changes .It will

be saved only in the object model To save changes in the database use the

following syntax Database.Submitchanges();

Page 21: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008
Page 22: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

VS 2008 designer or SQLMetal command Map tables & fields to classes &

properties Generates partial classes with attributes Each record becomes an object Data context represents the database Utilise tables, views or stored procedures

Page 23: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

UpdateSet object properties

Deletecontext.Table.DeleteOnSubmit(object)

Insertcontext.Table.InsertOnSubmit(object)

Commit changes backcontext.SubmitChanges()Transactional - all or nothing

Page 24: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Debugging(Complex dedug in SP)

Deployment(.dll)

Type Safety (Errors)

Page 25: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Extend functionality to an existing class without needing to subclass it

To add extension methods to objects implementing the Ienumerable interface,you need a reference to system.core.dll

Page 26: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

Earlier Xpath or Xquery were used to manipulate XML documents, at present LINQ to XML concepts are usedAdd a reference to the System.xml.linq.dll in the project and also import System.xml.linq namespaceTree -> Xdocument

->XElement->XAttribute

LOADXDocument LibraryBooks = new Xdocument();

LibraryBooks = Xdocument.load(“Books.xml”);

Page 27: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

BlinqScaffold web UI for list/view/update pages

PLINQParallel query processing over many CPUs

SyncLINQ & Continuous LINQUpdated results via INotifyCollectionChanged

Page 28: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

PLINQ Microsoft, as a part of the Parallel

Extensions, is developing PLINQ, or Parallel LINQ, a parallel execution engine for LINQ queries. It defines the IParallelEnumerable<T> interface. If the source collection implements this interface, the parallel execution engine is invoked. The PLINQ engine executes a query in a distributed manner on a multi-core or multi-processor system.[28]

Page 29: Language Integrated Query  Make query a part of the language  Component of.NET Framework 3.5  Shipped with Visual Studio 2008

.NET Framework 3.5 Anonymous types (shaping) Extension methods (query operators) Type inference (var keyword) Lambda expressions (query syntax)