将数据插入实体框架中的多个表中

时间:2016-07-06 10:31:09

标签: entity-framework model-view-controller entity-framework-6

我有2张表,如下所示。我正在使用DB第一个approch

public class Team
{
    public long Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

public class Employee
{
    public long Id { get; set; }
    public long TeamId { get; set; } // foreign key reference fom Team table
    public string Name { get; set; }
    public long ReferedBy { get; set; } // foreign key reference fom employee table
}

现在我必须向两个表插入一次数据。例如,我需要插入如下数据。

enter image description here

在介绍Referred By列之前,我使用下面的代码插入。

        Team team = new Team();
        team.Name = "Team1";
        team.Description = "Some Description";

        Employee E1 = new Employee();
        E1.Name = "Jon";
        Employee E2 = new Employee();
        E2.Name = "Harish";

        team.Employee.Add(E1);
        team.Employee.Add(E2);

        DBEntity db = new DBEntity();
        db.Set<Team>().add(team);
        db.saveChanges();

在介绍Referred By Column后如何将这些引用插入数据库。

2 个答案:

答案 0 :(得分:0)

  
    

public long TeamId {get;组; } //外键引用fom团队表

  

你需要一对一的关系,请看我的帖子:

http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

  

在介绍Referred By列之前,我使用下面的代码插入。

这里需要自我引用实体:

EF self one-to-many relationship

答案 1 :(得分:0)

如果需要将插入作为批量插入执行,并且Employee表的id是标识列,则必须调用SaveChanges()两次以从db获取标识值,以便设置emp2.​​ReferredBy = emp1 .ID;

如果您要求在一次点击中击中数据库,则有两种选择 1.使用事务并在事务回滚失败的情况下调用SaveChanges两次。 2.构建自己的身份技术并在db中停止身份。

检查Get identity before SaveChanges