我有这个
public class SchoolContext : DbContext
{
public DbSet<Course> Courses { get; set; }
public DbSet<Student> Students { get; set; }
}
让我们说学生和课程只有一个名字和一个ID ......学生只有一门课程而一门课程只有一名学生
现在在我的特殊控制器方法中,我想同时添加一个学生和一个课程,所以我这样做:
Student newStudent = new Student();
newStudent.Name = "banana";
db.Students.Add(newStudent);
db.SaveChanges();
但是等我希望这个学生与新课程相关,但是我不知道学生ID,因为它是由数据库生成的,我注意到在调试后将学生添加到数据库中可以使用此
获取其IDnewStudent.ID
所以我只想添加一个这样的课程:
Course newCourse = new Course();
newCourse.Name = "platano";
Course.StudentID = newStudent.ID; //<-----newStudent.ID
db.Courses.Add(newCourse);
db.SaveChanges();
所以我的问题是,这种同时添加两件事的方式有什么问题吗?
学生的课程(其CourseID及其虚拟课程变量)是否与新课程自动相关?
答案 0 :(得分:2)
您可以通过链接实体来避免担心学生的身份。
Student newStudent = new Student();
newStudent.Name = "banana";
db.Students.Add(newStudent);
Course newCourse = new Course();
newCourse.Name = "platano";
newCourse.Student = newStudent;
db.Courses.Add(newCourse);
db.SaveChanges();
此外,您可能有充分的理由这样做,但在Course类上拥有Student属性似乎有点奇怪。在Student类上拥有Course属性可能更有意义。
答案 1 :(得分:0)
这完全没问题,但有一些事情需要提及。
首先,如果你正在做的是一个工作单元,那么你应该把它包装在一个事务中 - 多亏了这个修改数据的所有db操作成功或者所有这些操作失败。
我还会更改Course类,以便它将引用(属性)到Student实体,而不仅仅是Student的id。