public CMSPage SelectAllByPath(string path)
        {
            CMSPage c = null;
            List<CMSContentItem> items = null;
            CMSContentItem item = null;

            DataProvider.ExecuteCmd(GetConnection, "dbo.CMSPage_SelectAllByPath"
               , inputParamMapper: delegate(SqlParameterCollection paramCollection)
               {
                   paramCollection.AddWithValue("@Path", path);

               }, map: delegate(IDataReader reader, short set)
               {
                   if (set == 0)
                   {
                       c = new CMSPage();
                       int startingIndex = 0; //startingOrdinal

                       c.Id = reader.GetSafeInt32(startingIndex++);
                       c.Name = reader.GetSafeString(startingIndex++);
                       c.Url = reader.GetSafeString(startingIndex++);
                       c.PubDate = reader.GetSafeDateTime(startingIndex++);
                       c.ExpireDate = reader.GetSafeDateTime(startingIndex++);
                       if (c.ExpireDate == DateTime.MinValue)
                       {
                           c.ExpireDate = null;
                       }
                       c.Template = reader.GetSafeInt32(startingIndex++);
                       c.MetaTag = reader.GetSafeString(startingIndex++);
                       c.MetaDescription = reader.GetSafeString(startingIndex++);
                       c.Active = reader.GetSafeBool(startingIndex++);
                       c.IncludeInNavigation = reader.GetSafeBool(startingIndex++);

                   }

                   if (set == 1)
                   {
                       item = new CMSContentItem();
                       int startingIndex = 0;

                       item.PageId = reader.GetSafeInt32(startingIndex++);
                       item.TemplateId = reader.GetSafeInt32(startingIndex++);
                       item.Type = reader.GetSafeInt32(startingIndex++);
                       item.KeyName = reader.GetSafeString(startingIndex++);
                       item.ContentId = reader.GetSafeInt32(startingIndex++);
                       item.TemplateKeyId = reader.GetSafeInt32(startingIndex++);
                       item.Value = reader.GetSafeString(startingIndex++);

                       if (items == null)
                       {
                           items = new List<CMSContentItem>();

               }

                       items.Add(item);
                   }
                   if (items != null)
                   {
                       c.Content = new List<CMSContentItem>();
                       c.Content = items;
                   }

               }
               );

            return c;
        }
        private static CMSContentItem MapCMSContentItem(IDataReader reader)
        {
            CMSContentItem c = new CMSContentItem();

            int startingIndex = 0;

            c.PageId = reader.GetSafeInt32(startingIndex++);
            c.TemplateId = reader.GetSafeInt32(startingIndex++);
            c.Type = reader.GetSafeInt32(startingIndex++);
            c.KeyName = reader.GetSafeString(startingIndex++);
            c.ContentId = reader.GetSafeInt32(startingIndex++, null);
            c.TemplateKeyId = reader.GetSafeInt32(startingIndex++, null);
            c.Value = reader.GetSafeString(startingIndex++);
            return c;
        }
        public List<CMSContentItem> GetContentById(int id)
        {
            List<CMSContentItem> items = null;
            CMSContentItem item = null;

            DataProvider.ExecuteCmd(GetConnection, "dbo.CMSContent_SelectById"
               , inputParamMapper: delegate (SqlParameterCollection paramCollection)
               {
                   paramCollection.AddWithValue("@Id", id);

               }, map: delegate (IDataReader reader, short set)
               {

                   if (set == 0)
                   {
                       item = new CMSContentItem();
                       int startingIndex = 0;

                       item.PageId = reader.GetSafeInt32(startingIndex++);
                       item.TemplateId = reader.GetSafeInt32(startingIndex++);
                       item.Type = reader.GetSafeInt32(startingIndex++);
                       item.KeyName = reader.GetSafeString(startingIndex++);
                       item.ContentId = reader.GetSafeInt32(startingIndex++);
                       item.TemplateKeyId = reader.GetSafeInt32(startingIndex++);
                       item.Value = reader.GetSafeString(startingIndex++);

                       if (items == null)
                       {
                           items = new List<CMSContentItem>();

                       }

                       items.Add(item);
                   }

               }
               );

            return items;
        }