none
Enums e banco de dados RRS feed

  • Pergunta

  • Pessoal,

    Pelo que entendo de enum, eh apenas um nova que ira representar um INT.

    Perguntas:
    1. Enum DiasSemana
    enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
    Neste tipo de enum, mesmo que o dia da semana pareca ser string, internamente eh um INT ?
    Ou seja, minha Tabela Semanas, campo DiaSemana, ira conter Monday ou 1 ?

    2. Enum TipoCliente
    enum TipoCliente { Registrado = 0, Novo = 1, Desconhecido = 2 }

    Considerando que estes enums serao salvos no meu banco de dados em tabelas especificas, como eles serao salvos ?
    Como INT ou como String ?
    E minha Tabela Clientes, campo TipoCliente, ira conter Registrado ou 0 ?

    Valeu

    segunda-feira, 24 de setembro de 2018 15:54

Todas as Respostas

  • Olá!

    1. Enum DiasSemana
    enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
    Neste tipo de enum, mesmo que o dia da semana pareca ser string, internamente eh um INT ?

    R: O enum seria uma lista de constantes nomeadas (e únicas dentro da lista) que, implicita ou explicitamente possuem uma numeração iniciando em zero, ou com o número que você definir.

    Ou seja, minha Tabela Semanas, campo DiaSemana, ira conter Monday ou 1 ?

    R: Normalmente o Id da semana é que irá corresponder à numeração do item do enum. Por exemplo: na sua tabela você tem as colunas Id e DiaSemana:
    _ _ _ _ _ _ _ _ _ _ _
    Id       | DiaSemana
    ---------|-----------
    3        | Monday
    7        | Tuesday
    ---------------------

    O seu enum poderia ficar assim:

    public enum EDay 
    {
    Mon = 3,
    Tue = 7  
    }

    Observe que posso nomear a constante como eu quiser (desde de que faça sentido, rsrs).
    Assim, quando você desejar comparar se o retorno da tabela é um dia ou outro da semana, você utilizará o enum ao invés do valor propriamente dito, por exemplo:

       if (semanas.Id == (int)EDay.Tue), e não if (semanas.Id == 3)

    Quando você converte o enum para int "(int)EDay.Tue", você está obtendo o valor inteiro (int) relacionado ao enumerador selecionado. Você também poderia testar assim:

       if ((EDay)semanas.Id == EDay.Tue)

    Observe que desta vez eu converti o valor do Id para um enumerador de EDay.  

    2. Enum TipoCliente
    enum TipoCliente { Registrado = 0, Novo = 1, Desconhecido = 2 }
    Considerando que estes enums serao salvos no meu banco de dados em tabelas especificas, como eles serao salvos ?
    Como INT ou como String ?
    E minha Tabela Clientes, campo TipoCliente, ira conter Registrado ou 0 ?

    R: Ficará assim, por exemplo:
    _ _ _ _ _ _ _ _ _ _ _ _
    Id       | Nome
    ---------|-------------
    0        | Registrado
    1        | Novo
    2        | Desconhecido
    -----------------------
    Leia este artigo sobre enum, que pode te ajudar também.

    Há outras maneiras de trabalhar com enum, mas acho que isto já responde as suas perguntas. Espero que ajude.

    Bom trabalho!

       
    • Editado Rodrigo CdS segunda-feira, 24 de setembro de 2018 21:47
    segunda-feira, 24 de setembro de 2018 21:46