由于复杂的历史原因,我有两张表:
员工
[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