【发布时间】:2016-02-12 15:13:26
【问题描述】:
我有那个数据库
Student 可以有多个 Subject。所以我像这样存储它们:
StudentId:1,姓名:Math; StudentId:1,姓名:地理
等等。
我在 Viewbag 中有主题:
ViewBag.Subjects = new SelectList(new[] { "Math", "Phisic", "Chemic", "English" }
.Select(x => new { value = x, text = x }),
"Value", "Text");
并且用户可以一次选择多个项目。 当我注册新学生时,它还必须插入该学生的科目。对他们来说,我就是:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register([Bind(Include = "Id,Name,Surname,BirthDate,Gender,Subject")] Students student)
{
if (!ModelState.IsValid)
{
SubjectsList();
return View();
}
Student _student = new Student();
_student.Name = student.Name;
_student.Surname = student.Surname;
_student.Gender = student.Gender;
_student.BirthDate = student.BirthDate;
Subject _subject = new Subject();
if (!student.Subject.Any())
{
foreach (var item in student.Subject)
{
_db.Subjects.Add(item);//Here it throws an exception Wrong overload
}
}
_db.Students.Add(_student);
await _db.SaveChangesAsync();
return RedirectToAction("Index");
}
我的学生班在这里:
public class Students
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Gender { get; set; }
public DateTime? BirthDate { get; set; }
public List<string> Subject { get; set; }
}
我的问题是如何在我的主题表中添加主题值
【问题讨论】:
-
问题是……
-
我认为您正在尝试实现类似的目标:stackoverflow.com/questions/33515256/…
-
@venerik 我更新了我的问题
-
个人认为你的数据模型是错误的;你可以有没有学生的科目,对吧?两个学生共享一个主题呢?实际上,您可能想要的是从主题表中删除
studentId,并创建一个新的“交叉引用”表,其中仅包含studentId和subjectId。
标签: c# sql sql-server asp.net-mvc entity-framework