由于复杂的历史原因,我有两个表:
员工
[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();
它保存OK,并创建一个新用户。 不幸的是,我发现我的员工的新副本也是使用新的employee_id创建的。
我怎么能阻止这个? 使用Entity Framework 6.01