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 ?