Data Access Layer - AC Gold
AC Gold database design is probably one of the best among the available shopping cart solutions. If you know a bit of databases, AC Gold database design is very easy to understand and follow. There are a few areas (e.g. Category and Catalog tables) that are slightly complex but in general you can just look at the database tables/fields and get a fair idea of what they are meant for.
Ablecommerce Gold makes use of NHibernate for data access. For the most part we just have to deal with the 'Objects' in C#. The code that we have written complies with ASP.NET Data Source Object Model. This helps a great deal in using these objects directly in ASP.NET. Here I will take the example of Affiliates and explain how they are represented/accessed in the database, in the C# code and in the ASP.NET code.
Affiliates in Database
Here is how Affiliates are defined in database
CREATE TABLE ac_Affiliates ( AffiliateId INT IDENTITY NOT NULL, StoreId INT NOT NULL, Name NVARCHAR(100) NOT NULL, PayeeName NVARCHAR(100) NULL, FirstName NVARCHAR(30) NULL, LastName NVARCHAR(50) NULL, Company NVARCHAR(50) NULL, Address1 NVARCHAR(100) NULL, Address2 NVARCHAR(100) NULL, City NVARCHAR(50) NULL, Province NVARCHAR(50) NULL, PostalCode NVARCHAR(15) NULL, CountryCode CHAR(2) NULL, PhoneNumber NVARCHAR(50) NULL, FaxNumber NVARCHAR(50) NULL, MobileNumber NVARCHAR(50) NULL, WebsiteUrl NVARCHAR(255) NULL, Email NVARCHAR(255) NULL, CommissionRate DECIMAL(9,4) NOT NULL, CommissionIsPercent BIT NOT NULL, CommissionOnTotal BIT NOT NULL, ReferralPeriodId TINYINT NOT NULL, ReferralDays SMALLINT NOT NULL, GroupId INT NULL, PRIMARY KEY(AffiliateId))