C# 如何在Asp.net mvc中使用viewmodel更新多个表
员工模式C# 如何在Asp.net mvc中使用viewmodel更新多个表,c#,asp.net-mvc,entity-framework-6,viewmodel,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Entity Framework 6,Viewmodel,Asp.net Mvc Viewmodel,员工模式 public class Employee { [Key] public int EmployeeID { get; set; } public string Name { get; set; } public virtual Department Departments { get; set; } public int DepartmentID { get; set; } } publi
public class Employee
{
[Key]
public int EmployeeID { get; set; }
public string Name { get; set; }
public virtual Department Departments { get; set; }
public int DepartmentID { get; set; }
}
public class Department
{
public int DepartmentID { get; set; }
public string DepartmentName { get; set; }
}
部门模式
public class Employee
{
[Key]
public int EmployeeID { get; set; }
public string Name { get; set; }
public virtual Department Departments { get; set; }
public int DepartmentID { get; set; }
}
public class Department
{
public int DepartmentID { get; set; }
public string DepartmentName { get; set; }
}
部门和员工的视图模型
public class EDViewModel
{
public int ID { get; set; }
public int EmployeeID { get; set; }
public string Name { get; set; }
public Department Departments { get; set; }
public int DepartmentID { get; set; }
public string DepartmentName { get; set; }
}
现在我想用单视图更新这两个表
控制器
public ActionResult Edit(int?id)
{
// write some code for update both table at once time
}
后方法
[HttpPost]
public ActionResult Edit(EDViewModel Emodel)
{
var user = db.Employees.Where(c => c.Employee_Id == Emodel.Employee_Id).FirstOrDefault();
user.UserName = Emodel.UserName;
user.ProfilePicture = Emodel.ProfilePicture;
db.Entry(user).State = EntityState.Modified;
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Home");
}
但在这种方法中,只更新员工记录,不更新部门记录
经过多次搜索,我终于得到了一个固溶体 希望你喜欢或改进这个 控制器
public ActionResult Edit(int? id)
{
MYDb db = new MYDb();
var user = db.Employees.Where(c => c.Employee_Id == Emodel.Employee_Id).FirstOrDefault();
if (user != null)
{
var vm = new EDViewModel { Employee_id = user.Employee_id, departmentName = user.departmentName };
if (user.department != null)
{
user.Departmet_id = vm.Departments.Departmet_id;
user.DepartmentName = vm.Departments.DepartmentName;
user.Employee_id = vm.employee_id;
user.employeeName = vm.employeeName;
}
return View(user);
}
return Content("Invalid Id");
}
[HttpPost]
public ActionResult Edit(EDViewModel Emodel)
{
var user = db.Employees.Where(c => c.Employee_Id == Emodel.Employee_Id).FirstOrDefault();
user.EmployeeId = Emodel.EmployeeId;
user.EmployeeName= Emodel.EmployeeName;
user.DepartmentName= Emodel.Departmt.DepartmentName;
// Just remove this line
// db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Home");
}
它对我有用
把这个拿走
db.Entry(user).State = EntityState.Modified;
如果我们不删除此实体验证发生请对此进行讨论,这可能会对您有所帮助。您可以向我们展示一些您已经尝试但失败的内容吗?感谢您的评论,请再次检查代码我更新它:)