繁体   English   中英

如何初始化与另一个实体具有一对一关系的新对象,然后将该新对象添加到数据库中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM