4
respostas

Como utilizar enum com EntityFramework

Tenho um relacionamento do meu sistema onde uma classe faz relacionamento com outra, porém essa outra classe não há em lugar nenhum do sistema para alterar/deletar seu estado (são apenas dados estáticos).

Gostaria de saber se o ideal a isso seria usar enum e como eu utilizo enums no C# usando EntityFramework?

O enum tem a seguinte estrutura: Enum

Gostaria de fazer isso ser refletido no banco em forma de tabela e já preenchido (Já que o usuário não irá poder modificar nada desta tabela)

4 respostas

Olá, Renan

Você poderia postar as classes aqui para darmos uma olhada?

Bom, antes, quero dizer que estou tendo que refazer um sistema antigo (feito em VBA em 1999) no qual teremos que fazer na linguagem C#...

A classe no qual quero trabalhar, é essa: https://ghostbin.com/paste/tnzws

Porém os dados preenchidos nessa tabela são dados que serão fixos, ou seja, em nenhum momento irá ter alteração, remoção etc. Logo, o meu chefe disse que não há necessidade de criar uma tabela e armazenar esses dados no banco. Ele me orientou que fizesse apenas um enum e que chamasse esses dados aí em memória, porém estou completamente perdido :(

Ok, então como você vai usar os dados do NozzleSize (diâmetro do bocal de mangueira?) no seu código? Como a sua tabela LoadSource se relaciona com NozzleSize? Imagino que seja suficiente criar um dicionário dentro da sua classe:

    private IDictionary<int, double?> 
        nozzleSize = new Dictionary<int, double?>
        {
            [1] = 1,
            [2] = 1.5,
            [3] = 2,
            [4] = 3,
            [5] = 4,
            [6] = 6,
            [7] = 8,
            [8] = 10,
            [9] = null            
        };

Agora precisamos ver como você vai usar esse dicionário.

Então, de acordo com o sistema antigo, o NozzleSize é tratado como um relacionamento entre tabelas normal (PK de uma tabela sendo FK em outra), porém ainda n fiz isso na classe que te passei acima.

Segue imagem da tabela do LoadSource O que estão destacado com a cor vermelha, são as colunas que são alimentadas pelo NozzleSize...

Porém, meu chefe não quer que esses dados do NozzleSize sejam persistidos no banco, ele quer q estejam utilizao em memória, porém na hora de persistir, pegar o dado selecionado e atribuir na coluna.