Durante la progettazione di un dominio, è possibile utilizzare entrambi gli approcci seguenti per accedere all'elenco di entità figlio all'interno di un'entità padre.
1. Ottieni / Imposta
Il seguente approccio è semplice e semplice da implementare, ma chiunque può sovrascrivere la raccolta degli ordini.
public User
{
public IList<Order> Orders { get; set; }
}
o
2. Accesso controllato
Il seguente è un po 'complicato, ma fornisce l'accesso controllato alla lista degli ordini.
public User
{
private IList<Order> _orders;
public User()
{
_orders = new List<Order>();
}
public IList<Order> Orders
{
get
{
return new new ReadOnlyCollection<Order>(_orders);
}
}
public void Add(Order order)
{
order.User = this;
_orders.Add(order);
}
public void Remove(Order order)
{
if (_orders.Contains(order)
{
order.User = null;
_orders.Remove(order);
}
}
}
Il secondo approccio ha chiaramente i suoi benefici, ma aumenta anche il numero di linee nel codice (immagina che poche delle collezioni siano nell'entità). Quindi la domanda è: ne vale la pena?