我坚持在Db Context上保存我的模型,我不知道从哪里开始或我将如何继续。
我有3个型号(这是一个易于阅读的条形版本)
public class Student
{
[Required]
public int Id { get; set; }
public virtual List<SyTerm> SyTerm { get; set; }
}
public class SyTerm
{
[Required]
public int Id { get; set; }
public virtual List<Course> Courses { get; set; }
}
public class Course
{
[Required]
public int Id { get; set; }
}
我的问题是当我尝试使用Entity Framework
保存它时 db.Courses.Add(cortemp1);
db.Courses.Add(cortemp2);
db.Students.Add(stud);
...
db.SaveChanges();
我总是收到错误(各种错误,如冲突等) 我不确定如何保存它的正确顺序。
例如我有这个
var stud = new Student();
var sys = new List<SyTerm>();
var cours = new List<Course>();
var sytemp1 = new SyTerm();
var sytemp2 = new SyTerm();
var cortemp1 = new Course();
var cortemp2 = new Course();
如何对其进行排序以将其保存在我的Db中?
答案 0 :(得分:1)
首先,如果您以正确的方式拥有实体关系,则不需要进行多次保存更改,因此请执行此类操作
var stud = new Student();
var sys = new List<SyTerm>();
var cours = new List<Course>();
var sytemp1 = new SyTerm();
var sytemp2 = new SyTerm();
sys.Add(sytemp1);//add data to collection
var cortemp1 = new Course();
var cortemp2 = new Course();
stud.SysTerm = sys;// here we are saying that student entity has this collection
dbCtx.Student.add(stud); // just add student
dbCtx.SaveChanges()
简单来说,将所有对象添加到学生然后只需添加它并保存更改,因为学生现在是一个完整的实体。如需精确样品,请查看 http://www.entityframeworktutorial.net/code-first/simple-code-first-example.aspx
答案 1 :(得分:0)
我认为你应该在Course和SyTerm之间建立关系,所以你的课程应该是这样的:
public class Course
{
[Required]
public int Id { get; set; }
public virtual SyTerm { get; set; }
}
当然,如果需要,你必须初始化它
答案 2 :(得分:0)
添加/更新实体框架实体时,必须确保考虑数据库外键关系并正确映射它。在你的情况下,SysTerm有课程列表,但当然也应该有一个SysTerm Id属性,以确保维护正确的一对多关系。示例如下所示如何以正确的方式创建实体关系
public class Student
{
public Student()
{
}
public int StudentID { get; set; }
public string StudentName { get; set; }
//Foreign key for Standard
public int StandardRefId { get; set; }
[ForeignKey("StandardRefId")]
public Standard Standard { get; set; }
}
public class Standard
{
public Standard()
{
}
public int StandardId { get; set; }
public string StandardName { get; set; }
public ICollection<Student> Students { get; set; }
}
请查看此答案以获取更多详细信息:Understanding ForeignKey attribute in entity framework code first