私はLadislavsの素晴らしい答えですでに提供されている3つのソリューションに加えて、4番目のソリューションを追加したいと考えています。事実、Naorの短い答えの詳細なバージョン。私は6
ではなく、部門オブジェクトの従業員にdeparment IDを割り当てるエンティティフレームワークのバージョンで働いている私は、に加えて、「外部キーの値」プロパティを持っている傾向がある
私のモデルクラスのナビゲーションプロパティ。
のでEmployee
クラスに私はDepartment
財産ともint型のDepartmentId
を(その可能であればEmployee
は何Department
を持っていないことをint型NULL可能にします)があります。
public class Employee
{
public int Id { get; set; }
public String EmployeeName { get; set; }
#region FK properties
public Department Department { get; set; }
public int? DepartmentId { get; set; }
#endregion
}
あなたは今、何ができるだろうさ代わりにそう :ちょうどDepartmentId
を設定するだけで設定
employee.Department = departmentObject;
:
0追加の従業員に
SaveChanges
を呼び出すとき
employee.DepartmentId = departmentObject.Id;
または
employee.DepartmentId = departmentid
は今、唯一の従業員が保存されますし、新しい部署が作成されません。ただし、Employee
からDepartment
への参照は、部門IDが割り当てられているため正しく設定されています。
詳細情報
私は通常/処理の従業員を読み込む場合にのみEmployee
クラスのDepartment
オブジェクトにアクセスします。 従業員を作成または更新するときは、Employee
クラスのDepartmentId
プロパティを使用して割り当てます。 Employee
のDepartment
プロパティに割り当てない
は1つの欠点があります。それはより困難なデバッグ作ることができ、SaveChanges
を呼び出して、従業員を再読み込みする前に、Employee
のDepartment
オブジェクトを参照するか、または使用することはできないので。 EF6内のエンティティの状態情報
を修正
これは、そのように行われているEF6でLadislavsソリューション番号3
を参照:
_context.Entry(employee.Department).State = EntityState.Unchanged;
は何ですか主キーの例外?あなたのモデルの主キープロパティ 'StoreGeneratedPattern'を' Identity'に設定していないかもしれません。これは、あなたが見ていくつかのコードサンプルを提供していない場合は? – philt5252