C# 实体框架下主数据表及相关表的处理

C# 实体框架下主数据表及相关表的处理,c#,entity-framework,entity-framework-5,ado.net-entity-data-model,C#,Entity Framework,Entity Framework 5,Ado.net Entity Data Model,我有三张桌子 员工(ID、名字、姓氏)-其中包括所有员工,包括经理等 EmployeeRole(RoleID,Role)-这里我们定义了员工的角色 项目(项目名称、经理、员工、日期)-这里是分配给所有员工的项目的详细信息 在项目表中,我有Emmployee、Manager等列,这两列都是Employee表的外键。问题是我有输入,比如(Firstname,Lastname),如何找到雇员的id。 或者是表结构错误 当我尝试在项目表中插入数据时,EmployeeRole表也在更新。它不应该更新Emp

我有三张桌子

员工(ID、名字、姓氏)-其中包括所有员工,包括经理等

EmployeeRole(RoleID,Role)-这里我们定义了员工的角色

项目(项目名称、经理、员工、日期)-这里是分配给所有员工的项目的详细信息

  • 在项目表中,我有Emmployee、Manager等列,这两列都是Employee表的外键。问题是我有输入,比如(Firstname,Lastname),如何找到雇员的id。 或者是表结构错误

  • 当我尝试在项目表中插入数据时,EmployeeRole表也在更新。它不应该更新EmployeeRole表。这是一个主数据


  • 请向我推荐解决方案?

    您的逻辑数据模型不正确(IMHO)

    一个项目可以有很多员工。一名员工可以作为一个特定角色参与一个或多个项目

    所以员工和项目之间是多对多的关系,交集表有一个角色类型

    e、 g

    那么你的生命就像这样:

    // Add a new Role
    Role role = new Role();
    role.RoleID = 1;   // TODO: make identity in database
    role.RoleName = "Role 1";
    db.Roles.Add(role);
    db.SaveChanges();
    
    // Add a new Employee
    Employee employee = new Employee();
    employee.EmployeeID = 1;   // TODO: make identity in database
    employee.FirstName = "Carl";
    employee.LastName = "Prothman";
    db.Employee.Add(employee);
    db.SaveChanges();
    
    // Add a new Project
    Project project = new Project();
    project.ProjectID = 1;   // TODO: make identity in database
    project.ProjectName = "Create new data model";
    db.SaveChanges();
    
    // Add employee to project as role1
    ProjectEmployee projectEmployee = new ProjectEmployee();
    projectEmployee.ProjectID = project.ProjectID;
    projectEmployee.EmployeeID = employee.EmployeeID;
    projectEmployee.RoleID = role.RoleID;
    db.ProjectEmployees.Add(projectEmployee);
    db.SaveChanges();
    
    // Add a new Role
    Role role = new Role();
    role.RoleID = 1;   // TODO: make identity in database
    role.RoleName = "Role 1";
    db.Roles.Add(role);
    db.SaveChanges();
    
    // Add a new Employee
    Employee employee = new Employee();
    employee.EmployeeID = 1;   // TODO: make identity in database
    employee.FirstName = "Carl";
    employee.LastName = "Prothman";
    db.Employee.Add(employee);
    db.SaveChanges();
    
    // Add a new Project
    Project project = new Project();
    project.ProjectID = 1;   // TODO: make identity in database
    project.ProjectName = "Create new data model";
    db.SaveChanges();
    
    // Add employee to project as role1
    ProjectEmployee projectEmployee = new ProjectEmployee();
    projectEmployee.ProjectID = project.ProjectID;
    projectEmployee.EmployeeID = employee.EmployeeID;
    projectEmployee.RoleID = role.RoleID;
    db.ProjectEmployees.Add(projectEmployee);
    db.SaveChanges();