Dry refactoring contro database

0

Il nostro database ha una tabella Attribute e una tabella WorkItem che hanno una relazione molti a molti utilizzando una tabella WorkItemAttribute . La tabella WorkItemAttribute contiene le chiavi esterne per ciascuna colonna e una value che specifica il valore dell'attributo associato.

Ho scritto un semplice web API CRUD e ho provato a trattare con WorkItemAttribute s per WorkItemID base usando un provider ORM.

Mi è stato quindi assegnato il compito di fare lo stesso per una tabella EnvelopeAttribute , che è uguale alla tabella WorkItemAttribute , ma ha invece una chiave esterna per una tabella Envelope .

Posso duplicare tutto ciò che ho scritto per il primo ticket, e cambiare tutte le occorrenze di "Envelope" in "WorkItem", ma in realtà mi infastidisce nel farlo.

C'è un modo per rifattorizzare la logica condivisa quando tutti i nomi delle classi sono diversi, anche a livello di ORM?

    
posta Austin_Anderson 18.09.2017 - 19:03
fonte

1 risposta

0

Puoi usare un tipo generico

IItemRepository<T>
{
     T GetAttributeById(string id);
}

Ma potresti trovare che devi usare il reflection, per ottenere l'Id o la mappa sull'oggetto.

A volte è meglio fare solo la tipizzazione extra

    
risposta data 18.09.2017 - 20:24
fonte

Leggi altre domande sui tag