1

由于复杂的历史原因,我有两张表:

员工

   [Key]
   public int employee_ID { get; set; }
   public Nullable<int> employeeStatus_ID { get; set; }
   public string employeeFirstName { get; set; }
   public string employeeSurname { get; set; }
   ...

用户

   [Key]
   public virtual Guid UserId { get; set; }
   ...
   public virtual Employee Employee { get; set; }

用户必须有员工记录。员工记录可能(还)没有用户记录。

在我的数据上下文中,我这样设置

   modelBuilder.Entity<User>().HasRequired(p => p.Employee)
                .WithOptional(x=>x.User);

在幕后,实体框架在用户对象上创建了一个整数外键 Employee_employee_ID。我无法引用它,但它就在那里。

我认为一切都很好。但是在某些情况下,员工会被有效地升级为用户,所以我有一个类似这样的功能:

   employee = GetMyEmployee(employeeID);

      User NewUser = new User
                {
                    UserId = Guid.NewGuid(),
                    Username = userName,
                    ...
                    Employee = employee
                };

                Context.Users.Add(NewUser);
                Context.SaveChanges();

它保存好,并创建了一个新用户。不幸的是,我发现我的员工的新副本也是使用新的employee_id 创建的。

我怎样才能阻止这个?使用实体框架 6.01

4

0 回答 0