public cachivache AddCachivache(cachivache item)
        {
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
                new TransactionOptions() { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = new TimeSpan(1, 0, 0) }))
            {
                using (RinconDataContext db =
                    new RinconDataContext(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString))
                {
                    var entity = Convert(item);

                    db.Cachivaches.InsertOnSubmit(entity);

                    try
                    {
                        db.SubmitChanges(ConflictMode.ContinueOnConflict);

                        scope.Complete();
                    }
                    catch (ChangeConflictException ex)
                    {
                        Trace.TraceError(ex.SerializeForLog(db));

                        // All database values overwrite current values.
                        foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                            occ.Resolve(RefreshMode.OverwriteCurrentValues);

                        throw ex;
                    }
                    catch (DbException ex)
                    {
                        Trace.TraceError(ex.Message);
                        throw ex;
                    }

                    return Convert(entity);
                }
            }
        }
        public cachivache[] GetAll()
        {
            using (RinconDataContext db =
                new RinconDataContext(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString))
            {
                var all = from c in db.Cachivaches
                          select Convert(c);

                return all.ToArray();
            }
        }
        public void DeleteCachivache(Guid id)
        {
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
                new TransactionOptions() { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = new TimeSpan(1, 0, 0) }))
            {
                using (RinconDataContext db =
                    new RinconDataContext(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString))
                {
                    var entity = db.Cachivaches.First(delegate(Cachivache match)
                    {
                        return match.id == id;
                    });

                    db.Cachivaches.DeleteOnSubmit(entity);
                }
            }
        }
        public void UpdateCachivache(cachivache item)
        {
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
                new TransactionOptions() { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = new TimeSpan(1, 0, 0) }))
            {
                using (RinconDataContext db =
                    new RinconDataContext(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString))
                {
                    var entity = db.Cachivaches.First(delegate(Cachivache match)
                    {
                        return match.id == item.id;
                    });

                    entity.name = item.name;
                    entity.description = item.description;
                    entity.categoryId = item.category;
                    entity.price = item.price;
                    entity.createdBy = item.createdBy;
                    entity.createdDate = item.createdDate;
                    entity.lastUpdate = item.lastUpdate;
                    entity.lastUpdatedBy = item.lastUpdatedBy;

                    try
                    {
                        db.SubmitChanges(ConflictMode.ContinueOnConflict);

                        scope.Complete();
                    }
                    catch (ChangeConflictException ex)
                    {
                        Trace.TraceError(ex.SerializeForLog(db));

                        // All database values overwrite current values.
                        foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                            occ.Resolve(RefreshMode.OverwriteCurrentValues);

                        throw ex;
                    }
                    catch (DbException ex)
                    {
                        Trace.TraceError(ex.Message);
                        throw ex;
                    }
                }
            }
        }
        public cachivache GetCachivache(Guid id)
        {
            using (RinconDataContext db =
                new RinconDataContext(ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString))
            {
                var query = from c in db.Cachivaches
                            where c.id == id
                            select Convert(c);

                return query.FirstOrDefault();
            }
        }