I have a Ticket table and its Receivers which is a collection. Receiver is a value object.
I defined all in EF Core 2.2 and everything is Okay.
When inserting a new ticket, receivers are added to ticket and would be saved.
For updating ticket, as Value Objects are Immutable, should I update the Receiver table or insert new receivers?
I mean this way : Just update Changed properties
public void AddOrUpdateReceiver(long? ticketId, long? referenceId, int responsibleId, int category, string note)
{
var existingReceiver = _receivers.FirstOrDefault(q => q.ResponsibleId == responsibleId);
if (existingReciever == null)
{
var receiver = new Receiver(ticketId, referenceId, responsibleId, category, note);
_receivers.Add(receiver);
}
else
{
existingReceiver.SetNote(note);
existingReceiver.SetReferenceId(category);
existingReceiver.SetCategory(category);
}
}
Or this way : Insert new row with new Id
public void AddOrUpdateReceiver(long? ticketId, long? referenceId, int responsibleId, int category, string note)
{
var existingReceiver = _receivers.FirstOrDefault(q => q.ResponsibleId == responsibleId);
if (existingReceiver == null)
{
var receiver = new Receiver(ticketId, referenceId, responsibleId, category, note);
_receivers.Add(receiver);
}
else
{
existingReceiver = new Receiver(ticketId, referenceId, responsibleId, category, note);
}
}