Language Integrated Query

italiansaucySoftware and s/w Development

Dec 13, 2013 (3 years and 10 months ago)

60 views




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
L
anguage
In
tegrated
Q
uery. 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 access

Single syntax to learn and remember


Strongly typed

Catch errors during compilation


IntelliSense

Prompt for syntax and attributes


Bindable result sets


More evident when more complex filters are
present

Others

C#

VB.NET

.NET Language Integrated Query (LINQ)

LINQ

to SQL

LINQ

to Objects

LINQ

to XML

LINQ

to Datasets

LINQ

to Entities

LINQ data source providers

ADO.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> source

Includes 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

Aggregate

Average

Count

Max

Min

Sum

Cast

OfType

ToArray

ToDictionar
y

ToList

ToLookup

ToSequenc
e

OrderBy

ThenBy

Descending

Reverse

Skip

SkipWhile

Take

TakeWhile

Concat

Distinct

Except

Intersect

Union

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 tables


Multiple inheritance hierarchy mappings


Many
-
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
(
eS

EntityDataReader

=

while

(


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


Object
-
relational mapping

Records 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


Update

Set object properties


Delete

context.
Table
.DeleteOnSubmit(object)


Insert

context.
Table
.InsertOnSubmit(object)


Commit changes back

context.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 used

Add a reference to the System.xml.linq.dll in the
project and also import
System.xml.linq

namespace

Tree



-
>
Xdocument




-
>
XElement





-
>
XAttribute


LOAD


XDocument

LibraryBooks

= new
Xdocument
();


LibraryBooks

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



Blinq

Scaffold web UI for list/view/update
pages


PLINQ

Parallel query processing over many CPUs


SyncLINQ & Continuous LINQ

Updated 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)