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
?