Click here to Skip to main content
15,923,051 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi
I Have model

public class Category
   {
       [Key]
       public int CategoryId { set; get; }
       public string CategoryName { set; get; }
       public int? ParentCategoryId { set; get; }
       public string ParentCategoryName { set; get; }

       [NotMapped]
       public virtual IList<Category> Categories { set; get; }

       public Category()
       {
           Categories = new List<Category>();
       }


   }


and my Update Action


[HttpPost]
      public ActionResult UpdateCategory(Category _category)
      {
          if (_category.CategoryId != 0)
          {
              objCategory = objCategoryContext.CategoryEntries.Where(c => c.CategoryId == _category.CategoryId).FirstOrDefault();

              objCategory.CategoryName = _category.CategoryName;
              objCategoryContext.CategoryEntries.Add(objCategory);
              objCategoryContext.SaveChanges();

          }
          return RedirectToAction("Message");
      }


and my Context

public class CategoryContext : DbContext
    {
        public CategoryContext()
            : base("Name=GunStore")
        {
            Configuration.ProxyCreationEnabled = false;
        }
        public DbSet<Category> CategoryEntries { set; get; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<Category>().ToTable("Category");
        }

    }



When i run this code every time insert new row in my database

Can you tell me where i did the mistake and what i will do ..

Thanks in Advance
Posted

Please change your code like below
C#
public ActionResult UpdateCategory(Category _category)
      {
          if (_category.CategoryId != 0)
          {
              objCategory = objCategoryContext.CategoryEntries.Where(c => c.CategoryId == _category.CategoryId).FirstOrDefault();
  objCategory.CategoryName = _category.CategoryName;

objCategoryContext.Students.Attach((objCategory );
                objCategoryContext.ObjectStateManager.ChangeObjectState(objCategory , System.Data.EntityState.Modified);
                objCategoryContext.SaveChanges();;

          }
          return RedirectToAction("Message");
      }


Hope this helps
 
Share this answer
 
Hi Jameel ,

Thanks for response me

but this line showing error

objCategoryContext.ObjectStateManager.ChangeObjectState(objCategory , System.Data.EntityState.Modified);


objCategoryContext did not have a property ObjectStateManager
 
Share this answer
 
Hi

Thanks for your Help . i have done small change in my code and it is working for me

objCategory.CategoryName = _category.CategoryName;
               objCategoryContext.CategoryEntries.Attach((objCategory));

               var manager = ((IObjectContextAdapter)objCategoryContext).ObjectContext.ObjectStateManager;
               manager.ChangeObjectState(objCategory, System.Data.EntityState.Modified);
               objCategoryContext.SaveChanges(); ;
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900