テーブルに履歴を保存したい。
私はテーブルを持っていますEmployee
。
Employee
{
[Id],
[name],
[phone],
[isActive],
[createdDate],
[closedDate](default '23:59:59 9999-12-31'),
[DepartmentId] References Department(id)
}
が変更された場合Employee
、元の値を取得しId
て実行し、変更された値を変更された元の値isActive=False, closedDate=DateTime.Now
で新しいものとして保存Employee
します。
void UpdateEmployee(Employee employee)
{
ContextDB db=new ContextDB();
var employeeToUpdate=db.Employees.Find(it=>it.Id==employee.Id);
employeeToUpdate.isActive=false;
employeeToUpdate.closeDate=DateTime.Now;
var newEmployee=new Employee
{
Name=employee.Name,
Phone=employee.Phone,
....
}
db.Employees.AddObject(newEmployee);
// How I can do this with EF
db.Employees.Modify(employeeToUpdate);
db.SaveChanges();
}
これどうやってするの?Department
また、別の質問です。別のテーブルへの参照があり、このテーブルに履歴を保存したい場合はどうすればよいですか。オブジェクトが変更Department
された場合はどうすればよいですか。Employee
PS私は自己追跡エンティティを使用しています。