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记录.还是有另一种方法吗?
不是分配外键,而是分配整个对象:
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中.