Upload
vivien-hall
View
256
Download
1
Embed Size (px)
Citation preview
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.
LINQ provides a high-level abstraction of virtually any data and emulates the query operations of the relational model.
Language Integrated Query (LINQ, pronounced "link") is a Microsoft .NET Framework component that adds native data querying capabilities to .NET languages.
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
Allows to perform iterations on Collections
Main namespace is System.core
C#var myCustomers = from c in customers where c.Region == "UK" select c;
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
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
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
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
Aggregate Conversion Ordering Partitioning Sets
AggregateAverageCountMaxMinSum
CastOfTypeToArrayToDictionaryToListToLookupToSequence
OrderByThenByDescendingReverse
SkipSkipWhileTakeTakeWhile
ConcatDistinctExceptIntersectUnion
and many others
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
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
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
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
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"]);
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
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();
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
UpdateSet object properties
Deletecontext.Table.DeleteOnSubmit(object)
Insertcontext.Table.InsertOnSubmit(object)
Commit changes backcontext.SubmitChanges()Transactional - all or nothing
Debugging(Complex dedug in SP)
Deployment(.dll)
Type Safety (Errors)
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
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”);
BlinqScaffold web UI for list/view/update pages
PLINQParallel query processing over many CPUs
SyncLINQ & Continuous LINQUpdated results via INotifyCollectionChanged
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]
.NET Framework 3.5 Anonymous types (shaping) Extension methods (query operators) Type inference (var keyword) Lambda expressions (query syntax)