【发布时间】:2017-12-26 07:47:12
【问题描述】:
我创建了 Class 和 Teacher 两个模型,我想使用具有两个模型的代码优先方法配置多对多关系。 当我将信息添加到班级和教师表中时,值不会使用多对多关系实体框架代码优先方法插入到 TeacherClasses 表中。
下面是模型和控制器的代码。
这是类模型
public class Class
{
[Key]
public int ClassId { get; set; }
[Required]
public string ClassName { get; set; }
public virtual ICollection<Teacher> Teachers { get; set; }
}
这是教师模型
public class Teacher
{
[Key]
public int TeacherId { get; set; }
[Required]
public string TeacherName { get; set; }
[DataType(DataType.Date)]
public DateTime JoiningDate { get; set; }
public decimal Salary { get; set; }
public string Email { get; set; }
public virtual ICollection<Class> Classes { get; set; }
[NotMapped]
public virtual Class Class { get; set; }
[NotMapped]
public virtual ICollection<int> SelectedClassList { get; set; }
}
这是教师控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "TeacherId,TeacherName,JoiningDate,Salary,Email,Classes,Class,SelectedClassList")] Teacher teacher)
{
if (ModelState.IsValid)
{
db.Teachers.Add(teacher);
db.SaveChanges();
teacher.Classes = new Collection<Class>();
foreach (var classId in teacher.SelectedClassList)
{
teacher.Classes.Add(new Class {ClassId = classId });
}
return RedirectToAction("Index");
}
return View(teacher);
}
这是数据库表的图像 in database class, teacher and teacherclasses tables shown
这是老师的观点
<div class="form-group">
@Html.Label("Class List", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@*@Html.ListBox("SelectedClassList", ViewData["ClassList"] as MultiSelectList)
@Html.ValidationMessageFor(model => model.Classes, "", new { @class = "text-danger" })*@
@Html.ListBoxFor(model => model.SelectedClassList, new MultiSelectList(ViewBag.ClassList, "value", "text"), new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.SelectedClassList, "", new { @class = "text-danger" })
</div>
</div>
【问题讨论】:
-
您遇到了什么错误?数据库表的图像没有帮助。尝试更清楚、更具体地说明问题。
-
我有错误,在控制器创建操作中使用此代码在 TeacherClasses 表中的值为空。
-
我首先使用多对多关系EF代码的多选列表框
-
为什么要将教师添加到它的 dbset 并在 填充类导航属性之前调用 SaveChanges?
-
我该怎么办?你能设置我的代码吗?请
标签: c# asp.net-mvc entity-framework