使用editStudent
查询我正在选择已编辑的项目并使用studentSubject
我正在从db中检索主题。
var editStudent = (from st in _db.Students
where st.Id == student.Id
select new Students
{
Id = student.Id,
Name = student.Name,
Surname = student.Surname,
BirthDate = student.BirthDate,
Gender = student.Gender,
Subject = (from q in student.Subject
select q).ToList()
}).FirstOrDefault();
var studentSubjects = (from q in _db.Subjects
where q.StudentId == student.Id
select q.Name).ToList();
如何删除未选择的主题? (他们将不会在第一次查询的主题列表中)
例如:
db中的是2个主题数学和英语,用户改变了这些,现在他 只有数学。第一个查询将仅返回列表中的数学和第二个 将返回数学和英语
答案 0 :(得分:0)
您可以轻松选择未使用的主题
var subjectsNotUsed = _db.Subjects.Where(subject => subject.StudentId == null);
然后(如果您使用的是Entity Framework 6),您可以使用.RemoveRange()
,所以:
_db.Subjects.RemoveRange(subjectsNotUsed);
_db.SaveChanges();
如果使用较低版本的EF,则需要逐个删除:
foreach (var subject in notUsedSubjects)
{
_db.Subjects.DeleteObject(subject);
}
_db.SaveChanges();
但我认为您应该更改数据库架构。学生不应该与主题相关。您应该仅使用表格学生来获取有关学生的信息,并将表格主题仅用于主题。第三个表(基本M:N关系)你将代表学生有一些主题,如:
这使您可以在数据库中存储每个科目和学生一次。