DotNetNuke has introduced a new (optional) datalayer, that utilizes a micro-orm called Peta-Poco. It provides the following:
- A close-to-the-metal option to execute any sql - basic SqlHelper like functionality. This would allow us to replace SqlHelper with a PetaPocoHelper class, which we have done in the core.
- Fetch (retrieve) methods that can take a parameterized SQL snippet as a parameter e.g.. “WHERE PortalID = @0”, thus reducing the overhead of creating and managing stored procedures.
- Page methods that can auto-generate the sql required to return a page of data from the database.
- Simple methods to Insert, Update and Delete “objects” in the database, with no need to write any sql.
- An IMapper interface which, while it doesn’t support cross-table mapping, will support things like an object qualifier (or table prefix)
- Transaction support
Components of the DAL 2
The DAL 2 can be broken down into a number of components/features.
- A Data Context. The Data Context represents the entry point for most developers. Developers can create a Data Context based on the default connection string or on a named connection string, and all the features of the DAL 2 are available regardless of database used.
- A Repository. Probably the most important part of the DAL 2 is the built in repository that allows developers to work with objects without writing any SQL at all.
- An IMapper interface that uses custom mapping attributes to control how the object's properties are mapped to the columns in the database table.
In addition there are a number of helper classes.
- A PetaPocoHelper class - this class represents the PetaPoco equivalent of the SqlHelper class which has traditionally been used to execute database calls in DotNetNuke