一对一/零关系问题实体框架

时间:2013-11-05 11:16:03

标签: c# entity-framework

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

员工

   [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

0 个答案:

没有答案