Ich verwende-Code Erste und haben Einrichtungen wie diese:Wie sollte ich eine untergeordnete Entität als inaktiv markieren, anstatt sie aus der Datenbank zu löschen, aber sie müssen sich gleich verhalten?
public class Account
{
public int Id { get; set; }
public string Name { get; set; }
public int ContactId { get; set; }
public virtual ICollection<Contact> Contacts { get; set; }
}
public class Contact
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Wenn ein Kontakt von einem Konto zu entfernen, habe ich die Zeile aus der Datenbank löschen würde. Anstatt die Zeile zu löschen, aktualisieren wir eine Statusspalte auf Inaktiv. Hier habe ich der Contact-Entität eine Status-Eigenschaft hinzugefügt:
public class Contact
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ContactStatus Status {g et; set; }
}
public enum ContactStatus
{
Active = 0,
Inactive = 1
}
Inaktive Kontakte sollten sich wie aus der Datenbank gelöschte Kontakte verhalten. Der Benutzer der Website wird gehen, um den Kontakt zu löschen und es wird "verschwinden" wie zuvor.
Hier ist unsere aktuelle Lösung. Wir erstellen eine weitere Eigenschaft namens ActiveContacts:
Es gibt einige Probleme mit diesem. Geschäftslogik und Linq-Abfragen kennen die neue Status-Eigenschaft nicht. Ich suche dann den gesamten Code nach Verweisen auf die alte Eigenschaft Kontakte. Gibt es eine bessere Lösung als alle Referenzen von Kontakten zu ActiveContacts zu ändern?