Linq 2 sql
This presentation is the property of its rightful owner.
Sponsored Links
1 / 34

LINQ 2 SQL PowerPoint PPT Presentation


  • 89 Views
  • Uploaded on
  • Presentation posted in: General

LINQ 2 SQL. By, Shahzad Sarwar. What you should know, before starting. Anonymous function Anonymous type Anonymous Methods Lamda expression Collection Initializers Object Initializers Extension methods Type Inference

Download Presentation

LINQ 2 SQL

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 2 SQL

By, Shahzad Sarwar


What you should know, before starting

  • Anonymous function

  • Anonymous type

  • Anonymous Methods

  • Lamda expression

  • Collection Initializers

  • Object Initializers

  • Extension methods

  • Type Inference

  • Automatic properties

  • Partial Methods

  • Generic

  • Projection (Later)

  • Expression Tree (Later)


  • What is the problem?

    Class!=Data

  • 1. strongly-typed queries , what ?

  • 2. strongly-typed results

  • Benefits

    1. IntelliSense

    2. Compile-time error checking.


  • What is Linq to SQL?

    1.OR Mapper API

    2.Syntax to query ( LINQ to objects )

    3.Tools

  • What r OR Mappers(OR/M)?

  • Not ORM?

  • What is Object Role Modeling (ORM)?

    • Associated language FORML (Formal Object-Role Modeling Language)

    • Supported by Visio and Microsoft Architect

    • References: http://www.orm.net/


Current Solutions in market

  • .NET Persistence

  • BBADataObjects

  • DataObjects.NET

  • Data Tier Modeler for .NET

  • DotNorm

  • Eldorado.NET

  • Enterprise Core Objects (ECO™)

  • Entity Broker

  • eXpress Persistent Objects for .NET

  • FastObjects.NET

  • JC Persistent Framework

  • LLBLGen Pro

  • ModelWorks

  • Nhibernate

  • Nolics.NET


Current Solutions in market

  • Norm

  • Norpheme

  • ObjectBroker

  • ObjectSpaces

  • ObjectSpark

  • Objectz.NET

  • OJB.NET

  • OPF.Net (Object Persistent Framework)

  • ORM.NET

  • Pragmatier Data Tier Builder

  • RapTier

  • Sisyphus Persistence Framework

  • TierDeveloper

  • Bob.NET

  • ObjectPersistor.NET

  • Genome


A view of LINQ

LINQ Consist of :

  • Total 6 LINQ implementations

  • 3 general LINQ technologies

  • 2 related to relational databases (OR/M)

  • 1 Future Technologies

  • LINQ to Objects

    Over objects , system.linq

  • LINQ to Dataset

    over dataset ( LINQ to objects + system.data.dataextension )

  • LINQ to SQL- DLinq

    Direct sql server ( system.data.linq )


  • LINQ to entities

  • entities framework ( a part of the ADO.NET Entity Framework which allows LINQ query capabilities)

  • The Entity Data Model (EDM) is a conceptual data {System.data.entity}

  • LINQ to XML = xlinq

  • The low-level XmlReader/XmlWriter API in .NET today. {System.Xml.Linq}

  • PLINQ

    Query execution engine accepts any LINQ-to-Objects or LINQ-to-XML query and automatically utilizes multiple processors or cores for execution when they are available.


Conceptual View (LINQ)


Conceptual View (LINQ to Dataset)


Conceptual View (LINQ 2 entities)


Conceptual View ( PLINQ)


References

[LINQ to Dataset]

  • http://blogs.msdn.com/adonet/archive/2007/01/26/querying-datasets-introduction-to-linq-to-dataset.aspx

  • http://msdn.microsoft.com/en-us/vbasic/bb688086.aspx

  • http://msdn.microsoft.com/en-us/library/bb386977.aspx

  • http://www.danielmoth.com/Blog/2007/07/linq-to-dataset.html

  • http://channel9.msdn.com/posts/DanielMoth/LINQ-to-DataSet/

    [LINQ to entities]

  • http://msdn.microsoft.com/en-us/library/bb386964.aspx

  • http://dotnetaddict.dotnetdevelopersjournal.com/adoef_vs_linqsql.htm

  • http://blogs.msdn.com/kaevans/archive/2008/01/29/linq-to-sql-vs-linq-to-entities-smackdown.aspx

  • http://msdn.microsoft.com/en-us/library/cc161164.aspx


What is difference LINQ to SQ L and LINQ to Entities?

  • 1:1 vs many to many , complex mapping

  • sql only , any database .... so run in database specfic pattern.

    http://msdn.microsoft.com/en-us/library/cc161164.aspx

  • Sample Application on the fly

  • Sample Application:

    Sample Add , delete , edit

    Example

    What next ??????????????????????????? It is over…


DataContext

  • Connection like class (Mixture of a lot of objects)

  • Caching n change tracking

  • Example

    • Log

    • ExecuteCommand

    • GetTable

    • ExecuteQuery

    • Refresh

    • ObjectTrackingEnabled

    • Transaction

  • Cases:

    • Nested Query

    • Cache Query / Multiple context

    • ToList()

  • What is Projection?


Context Management

  • Four Approaches

    1. Create a new Context for each atomic operation (Application level management)

    Problem: pass data objects or the data context itself around to other components in your application.

    E.g.: if you use business objects there's no real clean way to get a context passed between business objects.

    2.Create a global DataContext and handle all operations against this single DataContext object

    Problem:

    In other words if you have multiple simulataneous data operations that might not be directly linked/atomic

    Not possible to do simple update.....?

    and Options such ObjectTrackingEnabled or DeferredLoadingEnabled can't be set easily

    Works for desktop , not for Web because of threading ........


Context Management

3.Create a thread specific DataContext

Request specific DataContext that is tied to the active thread,Web request to the active ASP.NET HttpContext.

Example

Factory Pattern

4. Create a per business object DataContext


Architecture Guide Lines

References:

  • http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/05/10/9322.aspx

  • http://jonkruger.com/blog/2008/02/10/linq-to-sql-in-disconnectedn-tier-scenarios-saving-an-object/

  • http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx

  • http://devlicio.us/blogs/derik_whittaker/archive/2008/05/21/using-linq-s-datacontext-to-re-create-your-database-for-testing.aspx

  • http://www.west-wind.com/weblog/posts/246222.aspx

  • http://blogs.msdn.com/mirceat/archive/2008/03/13/linq-framework-design-guidelines.aspx

  • http://msdn.microsoft.com/en-us/library/bb882661.aspx


Code Generation

  • 2 Options

    • VS Studio OR Designer

    • SQLMetal

  • Code Understanding

  • Explore

    • XML Mapping file

    • Generated classes

      dataConext ,Database, Table, relationships

      Example


Query pipeline

  • LINQ 2 Objects = IEnumerable

  • LINQ 2 SQL= IQueryable

    public interface IQueryable : IEnumerable

    {

    Type ElementType { get; }

    Expression Expression { get; }

    IQueryProvider Provider { get; }

    }

  • What is Expression Tree?

    a method of translating executable code into data.

  • Add-ons:

    • Query Visualizer

    • Expression Tree Visualizer

    • Example

  • Out of processor , Grammar , sql processor

  • Various Stages ( Out of scope )

  • 1-Many mapping b/q LINQ grammer to db sql

    References:

  • http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx

  • http://blogs.msdn.com/charlie/archive/2008/02/13/linq-farm-seed-using-the-expression-tree-visualizer.aspx


  • Joins n Lazy Loading

    • Types of Joins

      • Inner Join

      • Left Outer Join

      • Right Outer Join

      • Cross Join

    • Example

    • LINQ implementation of Joins

    • Deferred Loading of objects

    • DataLoadOptions/DeferredLoadingEnabled property

    • AssociateWith Property


    LINQDataSource

    • Like sqlDataSource

    • Example 1 (Wizard View , declarative View )

    • Overriding events

    • Selecting event

    • Example 2


    Using Store Procedure

    • Add Store procedures to Model

    • Example

    • Add function to Models

    • Example

    • Difference b/w Store Procedure n function

      • for computations , for Business logic

      • Functions can be called inside select/update/delete stmt but not the procedures.


    LINQ2SQL Customization

    • By Store Procedure

    • Example

    • Object validation (Partial classes)

    • Example

    • Customize entity class ( 1 to m mapping )

    • Example


    Inheritance

    • In OR Mapping, 3 Type

    • Example


    Table per Class Hierarchy

    [Example]


    Table per Subclass


    Table per Concrete Class


    LINQ Dev. Tools

    • Visual LINQ Query Builder

      through a friendly interface

      http://code.msdn.microsoft.com/vlinq

      [Demo]

    • LINQPad

      http://www.linqpad.net/

      Development tool

      [Demo]


    Performance

    • Benchmark 1

      References

    • http://blogs.msdn.com/ricom/archive/2007/06/22/dlinq-linq-to-sql-performance-part-1.aspx

    • http://blogs.msdn.com/ricom/archive/2007/06/22/dlinq-linq-to-sql-performance-part-1.aspx


    Performance

    • Adventure Db , Store procedure

    • So, comparing to the raw ADO.NET - DAAB is 8% slower and LINQ is 28% slower.Comparing to DAAB - LINQ is 18% slower.

      Reference:

    • http://alexpinsker.blogspot.com/2007/07/benchmarking-linq-vs.html


    Performance

    • But consider

      • Productivity

      • SQL being first class language in VS

      • Caching of DB.

      • Change tracking optimization

        So Over a Great Milestone in Development process


    What is Left………………..

    • Design Pattern for LINQ to SQL

    • XLINQ

    • LINQ to Dataset

    • LINQ to entities

    • PLINQ

    • n…………………….

    • …..

    • …………..

    • ………………..

    • So Wait for Next presentation on LINQ …………………


  • Login