Sto progettando un'applicazione con l'intenzione di farne una linea di prodotti. Mi piacerebbe estendere la funzionalità su tutti i livelli e la prima lotta è con i modelli di dominio.
Ad esempio, la funzionalità di base avrebbe un'entità denominata Fattura con pochi campi standard e quindi i requisiti del cliente aggiungeranno alcuni nuovi campi ad esso, ma non voglio aggiungere alla classe Invoice principale.
Per ogni cliente potrei usare DbContext specifico del cliente e contesto iniettato corretto con l'iniezione delle dipendenze.
Inoltre, ogni cliente avrà la propria implementazione
public class Product.Domain.Invoice
{
public int InvoiceId { get; set; }
// Other fields
}
Come affrontare questo problema?
La soluzione 1 non funziona poiché Entity Framework non consente le stesse classi di nomi semplici.
public class CustomerA.Domain.Invoice : Product.Domain.Invoice
{
public User ReviewedBy { get; set; }
public DateTime? ReviewedOn { get; set; }
}
Soluzione 2
Crea una tabella separata e collegala alla tabella del dominio principale. Riutilizzare servizi e controller potrebbe essere più difficile.
public class CustomerA.Domain.CustomerAInvoice
{
public Product.Domain.Invoice Invoice { get; set; }
public User ReviewedBy { get; set; }
public DateTime? ReviewedOn { get; set; }
}