New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

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.

The Revolution Continues...

I have just completed a new tutorial, Creating a DotNetNuke® Module using LINQ to SQL For absolute beginners! I just went through the tutorial from scratch and it took me 15 minutes. I estimate that it would take a beginner about 30 minutes. However, that same beginner would then be able to complete the tutorial in 15 to 20 minutes on their subsequent tries.

This is a significant time savings because this module has the exact same functionality as my previous tutorial. I estimate that the previous tutorial would take a beginner at least 1 1/2 hours. Most importantly the percentage of people who should be able to complete the tutorial is vastly higher due to the fact that it is significantly easier. This tutorial is mostly drag and drop. The amount of code you have to type is less than a printed page.

Handling the CRUD

The time savings is mostly attributed to the fact that creation of the data access layer mostly consists of creating a .dbml file and dropping a database table on to the Object Relational Designer. Linq to SQL handles the CRUD operations for you.

Setting Control Properties Instead of Creating Code

Another interesting aspect of this Linq to SQL tutorial is that it doesn't contain a single line of Linq in the code behind. All the code behind code that is created is to handle injecting the current ModuleId and UserID. The database operations for selecting records, inserting records, updating records, and deleting records are all handled by simply configuring the LinqDataSource control.

You would be incorrect to assume that this is not fully extensible and customizable. See the "Adding Business Validation Rules" section of ScottGU's blog.

Note: At this time using Linq to SQL requires the addition of some keys in the web.config of the DotNetNuke site. For this reason Linq to SQL is not a practical option for module developer's who are selling their modules. However, for internal development the web.config modifications are simple.

These Are Exciting Times

Linq and Linq to SQL are new technologies that bear little resemblance to code that I have been creating for more than 10 years. Having to "start from scratch" as a beginner is a major bruise to the ego. However, it does bring pleasure to explore new things and capture the excitement of discovery that attracted me to the programming profession in the first place.

Fear of failure to learn drastically different concepts and anger at the loss of prestige and advantage that years of programming experience has provided are common motivations to resists new technology.  However, the advancements will continue whether we choose to participate in them or not.

The DotNetNuke project itself continues to be an example of rewriting all the rules. I cannot count how many programmers I know who refuse to consider levering DotNetNuke and continue to have late and over budget projects. If I am not the most efficient and productive programmer that I can be aren't I basically "robbing my employer"?

Disruptive Technology

Linq to SQL and other recent technologies from Microsoft represents a "Disruptive Technology". defines Disruptive Technology as "a technological innovation, product, or service that eventually overturns the existing dominant technology or status quo product in the market". I believe that in this case it does this by saving time and allowing for a "lower barrier of entry" for an aspiring programmer.

A future aspiring programmer/full-time carpet salesperson could create a page to store the companies customer list in the companies DotNetNuke website rather than waiting for months to have one of the overwhelmed DotNetNuke consulting firms to do it for them.

I believe this will be a good thing for all of us. While it may result in yet another poorly coded application that one of the DotNetNuke consulting firms may be called in later to "rescue", it may also turn out to be a successful application that saves a company thousands in time and money. This will contribute to our growth. And that I believe will be good for everyone. 


Comment Form

Only registered users may post comments.


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Davies (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
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 (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (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)
Steven Fisher (1)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out