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 New DAL II

The current plans for the DAL II are much different than the original proposal at: . However the result is the same: “Simplify module development by a reduction in code and complexity.”

In the original DAL II proposal, we used the Microsoft Enterprise Blocks. Using the Enterprise Blocks we created a MS SQL Server data provider and an Access data provider for the Survey module. What we did was configure the Enterprise Blocks to execute stored procedures when passed parameters. For Microsoft Access I created a way to simulate stored procedures in Microsoft Access using a dynamically loaded assembly. All a module developer had to do was change the current provider and create stored procedures or a custom assembly for the new data source.

Then I started working on the Firebird project and discovered that 90% of the MS SQL Server stored procedures could be recreated but about 10% could not. For those that could not be converted we would need multiple stored procedures to simulate the functionality of one MS SQL stored procedure. The current DAL handles this with no problem (the Firebird provider project is using the current DAL). If we used the DAL II we would be forced to use the dynamically loaded assembly method and that would be MORE coding than the current DAL not to mention slower performance.

The Core has decided that it did like some aspects of the DAL II proposal, namely that it allowed the module developer to:

  • Make calls to the database directly from the “controller” class
  • Not have to code a separate data provider

These are the things that made the DAL II so appealing. The Core then came up with a way to implement the 2 points above while avoiding the problems we encountered with the Firebird provider:

  • Keep the current DAL
  • Add “Generic Methods” to ease module development.

The new "Generic" methods are:

  • ExecuteNonQuery

  • ExecuteReader

  • ExecuteScalar

This will allow a module developer to use code such as:

Public Function GetItems(ByVal ModuleId As Integer) As ArrayList
Return CBO.FillCollection(DataProvider.Instance().ExecuteReader("GetItems",ModuleId), GetType(ItemInfo))
End Function

in the "controller" class. The "Generic" methods will exist in all the concrete data providers (MS SQL, Oracle, Firebird, ect.). A module written for MS SQL using the DAL II "should" work in other databases and will in most cases. In some special cases where another database stored procedure cannot recreate a MS SQL stored procedure, the original module code would have to be adjusted to issue more than one call.

The Core DotNetNuke code will continue to use the existing DAL. Independent module developers will now have a choice.

I am currently at work on tutorials that will show how to use the new code when it is released.


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