[英]How do I initialise a new object that has a one-to-one relationship to another entity and then add that new object to the database?
我刚刚开始了解Entity Framework 4,但仍有很多事情要解决,这个问题是最新的,我想知道是否有人会向我指出正确的方向?
我的模型中有许多相当简单的实体,但是其中一个实体与另一个实体定义了一对一的关系,我似乎找不到正确的事件顺序来将该实体的新实例添加到实体中。数据库成功。
简化的例子
我有一个学生实体和一个国籍实体,一个学生与一个国籍具有一对一关系
我正在创建一个新的学生实体以添加到数据库中,如果没有先设置国籍来满足一对一的关系,就无法坚持下去。
在数据库中,我的国籍实体之一是“未知”国籍,我希望这是我的新学生记录的初始值。
如何创建新学生,创建对“未知”国籍实体的初始引用,然后将新学生记录添加到数据库中,以确保一切按正确顺序进行?
我只是使用与模型一起生成的标准类,已经了解了STE和POCO类型,但是我决定退后一步,首先学习基础知识。
不知道您使用的是什么EF。 首先使用EF代码的方法如下:首先是您的实体:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Nationality Nationality { get; set; }
}
public class Nationality
{
public int Id { get; set; }
public string Name { get; set; }
}
在这种情况下,关系非常简单,您不需要任何EntityTypeConfiguration 。 您可以按以下顺序添加记录:
var nationalities = new List<Nationality>(){new Nationality(){Name ="Italian"},
new Nationality(){Name ="British"},
new Nationality(){Name ="American"}};
nationalities.ForEach(x => context.Nationality.Add(x));
context.SaveChanges();
//retrieve the nationality from the context
var italianNationality = context.Nationality.Where(x => x.Name == "Italian").First();
//create the student and assign a nationality
var student = new Student() { Name = "Giorgio", Nationality = italianNationality };
context.Students.Add(student);
context.SaveChanges();
这是您的表格结构(带有包含国籍FK的Student表格)
这里是插入的结果:
有关代码优先的更多信息, 请参见 : http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx此处: http:// blogs .msdn.com / b / adonet / archive / 2011/09/28 / ef-4-2-code-first-walkthrough.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.