在具有一对多关系的实体中同时插入数据

jpo*_*jpo 1 c# asp.net-mvc entity-framework insert one-to-many

我有两个实体:学生和Enrollement有一对多的关系.实体看起来像

public class Student{
 [Key]
 public int Studentid {get; set;}
 public string fname{get; set;}
 public string lname{get; set;}
 public virtual ICollection<Enrollement> Enrollement_E{ get; set; }
 }

 public class Enrollement{
 [Key]
 public int EnrolId {get; set;}

 [ForeignKey("Studentid ")]
 public int Student{get; set;}
 public string kk{get; set;}
 public virtual Student Student_E { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

Studentid是一个自动增量主键,在注册表中用作外键.我试图将数据插入两个表.如果1失败,则两个插入都不应该提交.所以,我有以下代码.

try{
  repository.stu.insert(new student{fname = "fname", lname="lname"});
  repository.enr.insert(new Enrollement{student=???, kk="test"});
}
finally{
  repository.save();
}
Run Code Online (Sandbox Code Playgroud)

当数据尚未保存时,我应该如何将外键传递给Enrollement记录.还是有另一种方法吗?

bob*_*bek 9

不是分配外键,而是分配整个对象:

try{
  var student = new student(){fname = "fname", lname="lname"};
  repository.stu.insert(student);
  repository.enr.insert(new Enrollement(){Student_E = student});
}
finally{
  repository.save();
}
Run Code Online (Sandbox Code Playgroud)

这样当student获取其新密钥时,它将自动保存到Enrollment中.