public override void DeleteModule(IModule module)
        {
            if (module == null)
                throw new ArgumentNullException("module");

            IModule m = GetModule(module.ID);

            if (m == null)
                return;

            LinqModule item = new LinqModule()
            {
                ApplicationName = this.ApplicationName,
                ContentRaw = module.ContentRaw,
                DateCreated = module.DateCreated,
                ID = module.ID,
                LastUpdated = m.LastUpdated,
                Title = module.Title
            };

            using (ContentManagerDataContext db = new ContentManagerDataContext(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString))
            {
                Table<LinqModule> modules = db.GetTable<LinqModule>();

                // Set to false to indicate that the object does not have a timestamp (RowVersion)
                modules.Attach(item, true);

                modules.DeleteOnSubmit(item);

                try
                {
                    db.SubmitChanges(ConflictMode.ContinueOnConflict);
                }
                catch (ChangeConflictException ex)
                {
                    Trace.TraceError(ex.Message);

                    // All database values overwrite current values.
                    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                        occ.Resolve(RefreshMode.OverwriteCurrentValues);
                }
                catch (System.Data.Common.DbException ex)
                {
                    Trace.TraceError(ex.Message);
                }
            }
        }
        public override void UpdateModule(IModule module)
        {
            if (module == null)
                throw new ArgumentNullException("module");

            IModule m = GetModule(module.ID);

            if (m == null)
                throw new ChangeConflictException("Page not found or deleted");

            LinqModule item = new LinqModule()
            {
                ApplicationName = this.ApplicationName,
                ContentRaw = module.ContentRaw,
                DateCreated = module.DateCreated,
                ID = module.ID,
                LastUpdated = m.LastUpdated,
                Title = module.Title
            };

            using (ContentManagerDataContext db = new ContentManagerDataContext(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString))
            {
                Table<LinqModule> modules = db.GetTable<LinqModule>();

                // Assume that "module" has been sent by client.
                // Attach with "true" to the change tracker to consider the entity modified
                // and it can be checked for optimistic concurrency because
                // it has a column that is marked with "RowVersion" attribute
                modules.Attach(item, true);

                try
                {
                    db.SubmitChanges(ConflictMode.ContinueOnConflict);
                }
                catch (ChangeConflictException ex)
                {
                    Trace.TraceError(ex.Message);

                    // All database values overwrite current values.
                    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                        occ.Resolve(RefreshMode.OverwriteCurrentValues);
                }
                catch (System.Data.Common.DbException ex)
                {
                    Trace.TraceError(ex.Message);

                }
            }
        }
        public override void InsertModule(IModule module)
        {
            if (module == null)
                throw new ArgumentNullException("module");

            LinqModule m = new LinqModule()
            {
                ApplicationName = this.ApplicationName,
                ContentRaw = module.ContentRaw,
                DateCreated = module.DateCreated,
                ID = module.ID,
                LastUpdated = module.LastUpdated,
                Title = module.Title
            };

            using (ContentManagerDataContext db = new ContentManagerDataContext(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString))
            {
                Table<LinqModule> modules = db.GetTable<LinqModule>();

                modules.InsertOnSubmit(m);

                try
                {
                    db.SubmitChanges(ConflictMode.ContinueOnConflict);
                }
                catch (ChangeConflictException ex)
                {
                    Trace.TraceError(ex.Message);

                    // All database values overwrite current values.
                    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                        occ.Resolve(RefreshMode.OverwriteCurrentValues);
                }
                catch (System.Data.Common.DbException ex)
                {
                    Trace.TraceError(ex.Message);
                }
            }
        }