Dove convertire int enum in un'architettura a 3 livelli?

1

Ho una situazione in cui un campo DB sta memorizzando un valore di enumerazione il cui tipo sottostante è int , quindi sto recuperando valori come 0, 1 e 2, che dovrebbero rappresentare MyEnum.Foo , MyEnum.Bar , e MyEnum.Baz . Sto chiamando un repository che restituisce DTO per ottenere un DTO che contenga questo valore. La mia domanda è, dove dovrebbe essere convertito questo int enum?

La mia soluzione ha 3 livelli: li chiamo Dati, Infrastruttura (fondamentalmente logica aziendale) e Web (fondamentalmente presentazione). Per quanto ne so, il livello dati non dovrebbe essere a conoscenza del livello BLL (cioè infrastruttura), eppure sto memorizzando l'enumerazione in Infrastruttura - è, dopo tutto, la logica aziendale che 1 significa Bar o qualsiasi altra cosa.

Quindi non posso fare la mia conversione nel livello dati. Dovrei ottenere il int restituito dal livello dati da Business Logic Layer, associarlo a un oggetto BLL e effettuare la conversione durante il mapping? Quindi il mapper convertirà int nel DTO dati in enum sull'oggetto modello BLL? O sarebbe accettabile che il mio repository di dati faccia riferimento solo a Infrastructure.Enums (o ovunque memorizzi le enumerazioni) e fornisca un campo nel DTO restituisce quel tipo di enum, il che significa che la mappatura potrebbe avvenire nel mio progetto Data.Repository ?

    
posta Jez 14.07.2018 - 20:35
fonte

1 risposta

2

Dovrei ottenere l'int restituito dal livello Data dal livello Logica aziendale, associarlo a un oggetto BLL e effettuare la conversione durante la mappatura?

Sì, questo è ciò che stiamo facendo nella nostra applicazione. Penso che sia meglio memorizzarli come int in DB e lanciarli avanti e indietro secondo le tue esigenze. Anche se è un sovraccarico ea volte tendi a dimenticare il casting. (il compilatore farà il suo lavoro quella volta :))

Puoi anche aggiungere qualche logica al tuo oggetto business per gestire Enum in modo da non dover convertire ogni volta.
La soluzione qui discussa spiega un buon modo per gestire le enumerazioni - link

Spero che aiuti.

    
risposta data 14.07.2018 - 21:04
fonte

Leggi altre domande sui tag