複雑な歴史的な理由から、2 つのテーブルがあります。
従業員
[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);
バックグラウンドで、Entity Framework はユーザー オブジェクトに整数の外部キー 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 で作成されていることがわかりました。
どうすればこれを止めることができますか? エンティティ フレームワーク 6.01 の使用