Linq it s not your father s data access
Download
1 / 20

LINQ: It’s Not Your Father’s Data Access - PowerPoint PPT Presentation


  • 97 Views
  • Uploaded on

LINQ: It’s Not Your Father’s Data Access. Denny Boynton Anheuser-Busch Companies. Goals. Provide overview of the LINQ project Demonstrate basic functionality of LINQ Point out learning resources for self study. What is LINQ?. “Language Integrated Query”

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'LINQ: It’s Not Your Father’s Data Access' - sera


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Linq it s not your father s data access

LINQ: It’s Not Your Father’s Data Access

Denny Boynton

Anheuser-Busch Companies


Goals
Goals

  • Provide overview of the LINQ project

  • Demonstrate basic functionality of LINQ

  • Point out learning resources for self study


What is linq
What is LINQ?

“Language Integrated Query”

Evolution of application data management

Coming with C# 3.0 and VB.NET 9.0

Anders Hejlsberg

Don Box


The problem
The Problem

  • Worlds of OO and data access are far, far apart

  • OO language types and native database types are often different

  • SQL code is “inside the quotes”

    • No strong typing or compile-time type checking

    • No Intellisense

    • No Statement completion

  • SQL and XML have query languages, objects to not

LINQ seeks to bridge the gap


What is linq1

<book>

<title/>

<author/>

<year/>

<price/>

</book>

SQL

WinFS

Objects

XML

What is LINQ?

C#

VB

Others…

.NET Language Integrated Query

StandardQueryOperators

DLinq(ADO.NET)

XLinq

(System.Xml)

Source: Anders Hejlsberg’s PDC Presentation



Language enhancements
Language Enhancements

Lambda Expressions

Extension Methods

Local Variable Type Inference

Object Initializers

Anonymous Types

Query Expressions

C => c.Name

c.Customers.Where(…).Select(…)

var n = 5;

New {c.Name, c.Phone}

from..where…select

new Point {x=1, y=2}


Standard query operators
Standard Query Operators

Source: Anders Hejlsberg’s PDC Presentation


Dlinq
DLinq

A means of managing relational data

Queries in quotes

Accessing data today:

SqlConnection c = new SqlConnection(…);

c.Open();

SqlCommand cmd = new SqlCommand(

@"SELECT c.Name, c.Phone

FROM Customers c

WHERE c.City = @p0");

cmd.Parameters.AddWithValue("@p0", "London“);

DataReader dr = c.Execute(cmd);

while (dr.Read()) {

string name = dr.GetString(0);

string phone = dr.GetString(1);

DateTime date = dr.GetDateTime(2);

}

dr.Close();

Loosely bound arguments

Loosely typed result sets

No compile time checks


Dlinq1
DLinq

Accessing data with DLinq

Classes describe data

public class Customer { … }

public class Northwind: DataContext

{

public Table<Customer> Customers;

}

Tables are like collections

Strongly typed connection

Northwind db = new Northwind(…);

var contacts =

from c in db.Customers

where c.City == "London"

select new { c.Name, c.Phone };

Integrated query syntax

Strongly typed results


Dlinq2
DLinq

  • Language integrated data access

    • Maps tables and rows to classes and objects

    • Builds on ADO.NET and .NET Transactions

  • Mapping

    • Encoded in attributes

    • Relationships map to properties

  • Persistence

    • Automatic change tracking

    • Updates through SQL or stored procedures


Xlinq
XLinq

Programming XML today

Imperative model

XmlDocument doc = new XmlDocument();

XmlElement contacts = doc.CreateElement("contacts");

foreach (Customer c in customers)

if (c.Country == "USA") {

XmlElement e = doc.CreateElement("contact");

XmlElement name = doc.CreateElement("name");

name.InnerText = c.CompanyName;

e.AppendChild(name);

XmlElement phone = doc.CreateElement("phone");

phone.InnerText = c.Phone;

e.AppendChild(phone);

contacts.AppendChild(e);

}

doc.AppendChild(contacts);

Document centric

No integrated queries

Memory intensive

<contacts>

<contact>

<name>Great Lakes Food</name>

<phone>(503) 555-7123</phone>

</contact>

</contacts>


Xlinq1
XLinq

Programming XML with XLinq

Declarative model

XElement contacts = new XElement("contacts",

from c in customers

where c.Country == "USA"

select new XElement("contact",

new XElement("name", c.CompanyName),

new XElement("phone", c.Phone)

)

);

Elementcentric

Integrated queries

Smaller and faster


Xlinq2
XLinq

  • Language integrated query for XML

    • Expressive power of XPath / XQuery

    • But with C# or VB as programming language

  • Leverages experience with DOM

    • Element centric, not document centric

    • Functional construction

    • Text nodes are just strings

    • Simplified XML namespace support

    • Faster and smaller



What is linq2
What is LINQ?

The LINQ project is:

  • Language Integrated Query for .NET

    • Native query syntax for .NET languages

  • Standard Query Operators

    • SQL-like method extensions for any .NET collection

    • System.Query namespace

  • DLinq

    • Code name for future version of ADO.NET

    • Query enabled data access framework

    • System.Data.Xlinq namespace

  • XLinq

    • Query enabled, smaller, faster XML DOM

    • System.XML.Xlinq namespace


Benefits of linq
Benefits of LINQ

  • Unified querying of objects, relational, XML

  • Type checking and IntelliSense for queries

  • SQL and XQuery-like power in C# and VB

  • Extensibility model for languages / APIs


Closing thoughts
Closing Thoughts

  • Not sure where use of LINQ will coincide with SQL

  • Use may well be driven by data management standards of an organization

    • Where should data access really “live”

  • ORM synchronization

  • This could really be a revolution


Resources
Resources

LINQ Project Home Page

  • http://msdn.microsoft.com/data/ref/linq/

    Anders Hejlsberg – LINQ

  • http://channel9.msdn.com/showpost.aspx?postid=114680

    LINQ Project Overview Whitepaper

  • http://msdn.microsoft.com/data/ref/linq/default.aspx?pull=/library/en-us/dndotnet/html/linqprojectovw.asp


Thank You

Denny Boynton

Email: [email protected]


ad