如何在一次通话中插入带有前一条记录键的记录?

时间:2013-11-15 18:13:04

标签: c# entity-framework asp.net-mvc-4

在我的数据库中,我有一个名为Department的表,其中列为DepartmentID(PK)和SubdepartmentOfID(FK)。 SubdepartmentOfID被约束为FK到DepartmentID,以便基本上创建分层类型关系。

我在Entity Framework 6中尝试做的是创建一个与部门名称相同的默认子部门,但为了做到这一点,我需要能够在插入之前设置SubdepartmentOfID。背景,对吗?目前,我正在使用这个逻辑:

  • 创建实体,插入,保存(最终填充实体中的DepartmentID键)。
  • 为子部门创建另一个实体,并将其SubdepartmentOfID属性设置为等于之前保存的实体的属性,另存为

我觉得这可以在一个电话中完成。可以吗?

1 个答案:

答案 0 :(得分:2)

这个答案假设如下:

  • 您首先使用数据库(使用设计器)而不是代码
  • 您有一个名为Department的表,其中包含以下列

    DepartmentID
    SubDepartmentID
    DepartmentName
    

我认为你可以做到这一点。

var department = new Department
                     {
                          DepartmentName = "D1"
                     };

var subDepartment = new Department
                     {
                         DepartmentName = "D1"
                     };

department.Department = subDepartment;
context.Departments.Add(department);

context.SaveChanges();

实体框架现在将处理自动生成的ID并将子部门与部门关联。