db.savechanges不能保存更改



有人可以帮助我使用db.SaveChanges吗?它不能保存对对象的更改。我添加了项目模型。

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");

在设置entry.state并调用savechanges((之前,将项目连接到您的项目实体,例如:

db.Projects.Attach(project);
db.Entry(project).State = EntityState.Modified;                               
db.SaveChanges();

这是我为解决这个问题所做的。这似乎很好。感谢大家的时间。

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");            
        }

最新更新