Learn More





DNN Community Blog

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

Speed Development Time by 50%

I have just completed Part 2 of my DotNetNuke Linq to SQL tutorial. Using the techniques covered in this tutorial I have been able to reduce my development time by at least 50%. In some cases where I had a lot of tables in my module, I have been able to reduce development time by 75%.

Along with this, I am also creating more efficient SQL. In the past I would create Data Access Layer methods that would select all fields and update all fields in a table each time they are called. With Linq to SQL only the fields that actually need to be selected or updated are used in the SQL statement. This has increased the performance of the application.

Linq to SQL also provides concurrency detection automatically. If one user alters a record after another user has pulled it up it will detect this and automatically prevent the update (you can handle the resolution of concurrency issues in a number of different ways).

The latest tutorial covers these real world situations:


  • Category Administration


    An example of the code savings can be illustrated by the steps required to "Show the number of items in each category":

    Double-click on Categories.ascx to open it. Switch to Design view.

    Select the LinqDataSource1 control. In it's Properties, click the yellow "lighting bolt" to view it's events. Double-click on the box to the right of Selecting.

    This will wire-up a method. Alter the method so it reads:


     protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    LinqThings4SaleDataContext LinqThings4SaleDataContext = new LinqThings4SaleDataContext();

    var Things4Sale = from T in LinqThings4SaleDataContext.ThingsForSale_Categories
    select new
    Count = LinqThings4SaleDataContext.ThingsForSales.Count(c => c.Category == T.Category)

    e.Result = Things4Sale;

    (note: normally you would place data access code in a separate file. This code was placed inline only for brevity)

    Click on the options for the GridView and select Edit Columns...

    Click the Add button.

    An extra ID and Category field will be added to the Selected fields box. Use the X button to remove the extra ID field. Click on the extra Category field and in the BoundField properties box:

    • Change  HeaderText to Count
    • Change  SortExpression to Count
    • Change  DataField to Count

    Click the OK button.

    When you view the Category administration in the website you will be able to see the count of items using that Category and still sort and page the GridView.

    The tutorial can be found here:

    Creating a DotNetNuke® Module using LINQ to SQL For absolute beginners! Part 2

  • Comments

    Comment Form

    Only registered users may post comments.


    2sic Daniel Mettler (124)
    Aderson Oliveira (15)
    Alec Whittington (11)
    Alex Shirley (10)
    Andrew Nurse (30)
    Anthony Glenwright (5)
    Antonio Chagoury (28)
    Ash Prasad (21)
    Ben Schmidt (1)
    Benjamin Hermann (25)
    Benoit Sarton (9)
    Beth Firebaugh (12)
    Bill Walker (36)
    Bob Kruger (5)
    Brian Dukes (2)
    Brice Snow (1)
    Bruce Chapman (20)
    Bryan Andrews (1)
    cathal connolly (55)
    Charles Nurse (163)
    Chris Hammond (203)
    Chris Paterra (55)
    Clinton Patterson (28)
    Cuong Dang (21)
    Daniel Bartholomew (2)
    Dave Buckner (2)
    David Poindexter (3)
    David Rodriguez (2)
    Doug Howell (11)
    Erik van Ballegoij (30)
    Ernst Peter Tamminga (74)
    Geoff Barlow (6)
    Gifford Watkins (3)
    Gilles Le Pigocher (3)
    Ian Robinson (7)
    Israel Martinez (17)
    Jan Blomquist (2)
    Jan Jonas (3)
    Jaspreet Bhatia (1)
    Jenni Merrifield (6)
    Joe Brinkman (269)
    John Mitchell (1)
    Jon Henning (14)
    Jonathan Sheely (4)
    Jordan Coopersmith (1)
    Joseph Craig (2)
    Kan Ma (1)
    Keivan Beigi (3)
    Ken Grierson (10)
    Kevin Schreiner (6)
    Leigh Pointer (31)
    Lorraine Young (60)
    Malik Khan (1)
    Matthias Schlomann (15)
    Mauricio Márquez (5)
    Michael Doxsey (7)
    Michael Tobisch (3)
    Michael Washington (202)
    Mike Horton (19)
    Mitchel Sellers (28)
    Nathan Rover (3)
    Navin V Nagiah (14)
    Néstor Sánchez (31)
    Nik Kalyani (14)
    Peter Donker (52)
    Philip Beadle (135)
    Philipp Becker (4)
    Richard Dumas (22)
    Robert J Collins (5)
    Roger Selwyn (8)
    Ruben Lopez (1)
    Ryan Martinez (1)
    Salar Golestanian (4)
    Sanjay Mehrotra (9)
    Scott McCulloch (1)
    Scott S (11)
    Scott Wilkinson (3)
    Scott Willhite (97)
    Sebastian Leupold (80)
    Shaun Walker (237)
    Shawn Mehaffie (17)
    Stefan Cullmann (12)
    Stefan Kamphuis (12)
    Steve Fabian (31)
    Timo Breumelhof (24)
    Tony Henrich (3)
    Torsten Weggen (2)
    Vicenç Masanas (27)
    Vincent Nguyen (3)
    Vitaly Kozadayev (6)
    Will Morgenweck (37)
    Will Strohl (163)
    William Severance (5)
    Try Evoq
    For Free
    Start Free Trial
    a Demo
    See Evoq Live
    Need More Information?