Reputation: 71
Can somebody help me out with db.SaveChanges
? It is not saving changes made to an object. I have added project model.
public class Project
{
public int ProjectID { get; set; }
public String Name { get; set; }
public virtual ICollection<ProjectParam> ProjectParams { get; set; }
}
// Project object
Project project = new Project { Name = ProjectName, ProjectID = ProjectID };
project.ProjectParams = new List<ProjectParam>();
// Update all params
for (int i = 0; i < ParamIDs.Length; i++)
project.ProjectParams.Add(new ProjectParam { ParamID = Convert.ToInt32(ParamIDs[i]),
ParamValue = ParamValues[i],
ProjectID = ProjectID });
// Save changes
if (ModelState.IsValid)
{
db.Entry(project).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return RedirectToAction("Index");
Upvotes: 0
Views: 5708
Reputation: 71
This is what i did to resolve this. This seems working fine. Thanks everyone for your time.
public ActionResult Edit(int ProjectID,string ProjectName,string[] ParamIDs,string[] ParamValues)
{
// Get project from context
Project project = db.Projects.Where(e => e.ProjectID == ProjectID).SingleOrDefault();
project.Name = "Hi";
// Remove existing parameters
db.ProjectParams.RemoveRange(db.ProjectParams.Where(c => c.ProjectID == ProjectID));
// Add new list of parameters
project.ProjectParams= new List<ProjectParam>();
//// Update all params
for (int i=0;i< ParamIDs.Length;i++)
project.ProjectParams.Add(new ProjectParam { ParamID = Convert.ToInt32(ParamIDs[i]),ParamValue=ParamValues[i],ProjectID=ProjectID });
// Save changes
if (ModelState.IsValid)
{
db.Entry(project).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return RedirectToAction("Index");
}
Upvotes: 0
Reputation: 1275
Before you set the Entry.State and call SaveChanges(), attach the project to your Project entity like so:
db.Projects.Attach(project);
db.Entry(project).State = EntityState.Modified;
db.SaveChanges();
Upvotes: 2