Dire che ho due classi: cliente e fattura. Le tabelle del database hanno questo aspetto:
CREATE TABLE Customer (ID int, name varchar(30), primary key (ID))
CREATE TABLE Invoice (ID int, date datetime, foreign key (CustomerID) references Customer(ID), primary key (ID))
Sto cercando di decidere se questa relazione debba essere modellata usando Aggregation o Association:
Aggregazione
public class Customer
{
int ID;
string Name;
List<Invoice> Invoices;
public void DoSomething()
{
//Do something with Customer.Invoices
}
}
Qui l'oggetto cliente (incluse le fatture) viene popolato dall'ORM.
Associazione
public class Customer
{
int ID;
string Name;
public Customer int id, string name, list<Invoice> invoices)
{
ID=id;
Name = name;
Invoices=invoices;
}
public void DoSomething(List<Invoice> Invoices)
{
//Do something with local Invoices
}
}
Dire che ho due storie di utenti. Una storia utente richiede che le fatture sopravvivano al cliente e una storia utente richiede che la fattura venga eliminata con il cliente. Come modellerei questo? Avrei un membro di n Invoices (come il frammento di codice uno) e un metodo che accetta le fatture come argomento (come il frammento di codice due)?
Non sto sviluppando un sistema che utilizza clienti e fatture. Sto solo cercando di migliorare il mio modo di pensare.