有人能够首先澄清在EF数据库中有多少关系可以工作。 例如Student
和Course
表中的关系是多对多的关系。我已经有一个数据库。MVC EF数据库首先多对多
所以我已经创建了一个.edmx
的类Student
和Courses
创建汽车。并且我在StudentCourseViewModel.cs
中添加了一个新课程。这个想法是为了控制与它的关系。 我StudentCourseViewModel
containts如下:
public class StudentCourseViewModel
{
public Student Student{ get; set; }
public IEnumerable<SelectListItem> AllCourses{ get; set; }
private List<int> _selectedCourse;
public List<int> SelectedCourse
{
get
{
if (_selectedCourse == null)
{
_selectedCourse = Student.Courses.Select(m => m.pkID).ToList();
}
return _selectedCourse;
}
set { _selectedCourse = value; }
}
public ActionResult Create()
{
ViewBag.Courses = new SelectList(db.Courses, "pkID", "Name");
return View();
}
public ActionResult Create(StudentCourseViewModel model,[Bind(Include = "pkID,Name")] Student student)
{
if (ModelState.IsValid)
{
if (student == null)
return HttpNotFound();
// Remove items that were unselected
db.Courses.Where(m => !model.SelectedCourses
.Contains(m.pkID))
.ToList()
.ForEach(m => student.Courses.Remove(m));
// Add newly selected items
var existingClientIds = student.Courses.Select(m => m.pkID).ToList();
db.Courses.Where(m => model.SelectedCourses.Except(existingClientIds)
.Contains(m.pkID))
.ToList()
.ForEach(m => student.Courses.Add(m));
db.students.Add(student);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(student);
}
我想现在该怎么处理// GET:/Create
和// POST:/Create
以及如何查看课程的create.cshtml
名单? 我得到与上面的代码以下错误:
型“System.Data.Entity.Infrastructure.DbUpdateException”的异常出现在EntityFramework.dll但在用户代码中没有处理
更多信息:更新条目时发生错误。详情请参阅内部例外。
关系如何映射到数据库中,你有一个中间'StudentCourse'映射表吗?目前尚不清楚您的“ViewModel”如何以任何方式映射关系。 –
嘿ja我在数据库中有一个中间的StudentCourse表,但是当我创建.edmx时,StudentCourse表没有显示在模型中,而是用“*”符号表示多对多的链接。 –
它听起来好像已经被正确映射了,你没有为你的中间表生成一个类,并且只填充相关的导航属性。你的控制器/视图中有什么是你遇到问题? –