Linq to SQL Cannot attach an entity that already exists

Viewed 40

I am getting a error Cannot attach an entity that already exists. at the line DbSet.Attach(entity); . Is there something I need to do different before the update?

Should I add a if condition to the ‘DbSet.Attach‘?

Error

System.Data.Linq.Table1.Attach(TEntity entity, Boolean asModified) at System.Data.Linq.Table1.Attach(TEntity entity)

      public void ResetAdminConfig(AdminConfig _adminConfig)
            {
                AdminConfig adminConfig = new AdminConfig();
                adminConfig = GetAdminConfig().SingleOrDefault(e => e.Id == _adminConfig.Id);
                adminConfig.ConfigSetting = false;
                adminConfig.Modified = DateTime.Now;
    
                UnitOfWork.GetRepository<AdminConfig>().Update(adminConfig);
            }


     public void Update(TEntity entity)
            {
                DbSet.Attach(entity);
                _context.Refresh(RefreshMode.KeepCurrentValues, entity);
            }

 public IRepository<TEntity, OrderTemplateDataContext> GetRepository<TEntity>() where TEntity : class
        {
            if (!_repositories.ContainsKey(typeof(TEntity)))
            {
                var repository = new OrderTemplateRepository<TEntity>(Context);
                _repositories.Add(typeof(TEntity), repository);
            }

            return (IRepository<TEntity, OrderTemplateDataContext>)_repositories[typeof(TEntity)];
        }


    private AdminConfig GetAdminConfig(long id)
    {
        return GetAdminConfigs().SingleOrDefault(e => e.Id == id);
    }
    private IQueryable<AdminConfig> GetAdminConfigs()
    {
        return UnitOfWork.GetRepository<AdminConfig>().Get(e => !e.IsDeleted);
    }
0 Answers
Related