Cześć,
chcę, aby żadne dane nie były kasowane z bazy danych a dodatkowo, aby każda zmiana była zapisywana (chcę mieć historię wszystkich zmian w bazie).
Przykładowo: jeśli użytkownik zmodyfikuje jakiś wiersz to poprzedni wiersz otrzyma status Active = false; i zostanie utworzony nowy obiekt, który będzie miał ustawiony parametr Active na true;
Każda klasa ma swój unikalny identyfikator (Id) oraz dodatkowy identyfikator ParentId, który odnosi się do danego rekordu z przed zmiany.
Przykładowo mam klasę:
public class Task
{
public int Id {get; set;}
public int ParentId {get; set;}
public string Description {get;set;}
public DateTime CreatedAt {get; set;}
public bool Acrive {get; set;}
}
Chcę, aby ParentId przy utworzeniu pierwszego nowego rekordu (Task) miał wartość równą Id, ale jednocześnie, gdy będziemy modyfikować dany rekord to aby przyjmował poprzednią wartość.
Przykładowo:
Tworzę pierwszy Task, który otrzymuje Id = 1 i ParentId = 1 oraz Active = true;
Tworzę drugi Task, który otrzymuje Id = 2 i ParentId = 2 oraz Acrive = true;
Modyfikuję pierwszy Task, dlatego Task o Id = 1 zmienia Active na false; oraz tworzony jest nowy obiekt o Id = 3 oraz ParentId = 1 oraz Acrive = true;
Tworzę kolejny obiekt Task, który otrzymuje Id = 4 oraz ParentId = 4 i Active = true;
Pytanie:
w jaki sposób zrobić, aby zmienna ParentId przy tworzeniu nowego Task-a otrzymywała wartość równą Id (które jest generowane automatycznie po stronie bazy) a przy zmianie Task-a otrzymywała poprzednią wartość?
Albo inaczej: jak zrobić, aby ParentId był równy Id, gdy nie będzie ustawiony w momencie tworzenia obiektu przez EF a w innym wypadku (gdy jest ustawiony) aby otrzymywał wartość, która jest ustawiona przy tworzeniu obiektu przez EF?
P.S. Nie chcę korzystać z Guid.