Usuário com melhor resposta
Como definir valores nulos para campos do banco com entity framework

Pergunta
-
Olá pessoal estou de volta ao mundo .Net, depois de programar alguns anos em ruby on rails estou dando uma olhada no Asp MVC.
Estou usando o asp.net MVC 3 com o Entity Framework e estou a seguinte dúvida, tenho uma classe Usuario.
public class Usuario { public int ID { get; set; } public string nome { get; set; } public string nome_usuario { get; set; } public int celular { get; set; } // essa eu queria que fosse null mas no banco fica not null public DateTime data_nascimento { get; set; } // essa eu queria que fosse null mas no banco fica not null public string email { get; set; } public string chave { get; set; } public string hash { get; set; } public int numero_logradouro { get; set; } }
nessa classe eu queria definir algumas propriedades como valores null e outras com valor not null isto no banco.
mas não estou conseguindo, quando o scaffold é gerado só os valores int e datetime ficam not null.
como faço para todos ficarem not null ou o contrario todos ficarem null?
- Editado edivandecastro sexta-feira, 6 de abril de 2012 20:42
Respostas
-
Dá uma olhada sobre nullable types e data annotations:
https://msmvps.com/blogs/cmattos/archive/2009/02/03/tipos-nulos-nullable-types-no-c.aspx
Parabéns por preferir .NET.
http://danielfonsecacastro.com.br/2010/01/26/asp-net-mvc-2-dataannotations-parte-1/
- Editado rs.developer sexta-feira, 6 de abril de 2012 22:01
- Marcado como Resposta edivandecastro sábado, 7 de abril de 2012 01:26
Todas as Respostas
-
Dá uma olhada sobre nullable types e data annotations:
https://msmvps.com/blogs/cmattos/archive/2009/02/03/tipos-nulos-nullable-types-no-c.aspx
Parabéns por preferir .NET.
http://danielfonsecacastro.com.br/2010/01/26/asp-net-mvc-2-dataannotations-parte-1/
- Editado rs.developer sexta-feira, 6 de abril de 2012 22:01
- Marcado como Resposta edivandecastro sábado, 7 de abril de 2012 01:26
-
Cara muito massa.
Entendi completamente. Com um pouco de estudo cheguei as seguintes conclusões:
Como C# é fortemente tipado certos tipos de dados não podem receber valores nulo como é o caso das propriedades do tipo int e DateTime, para que se possar atribuir um valor nulo a uma propriedade deste tipo deve-se colocar um "?" no final do tipo(Nullable Types). Como minha classe tinha algumas propriedades do tipo int e DateTime o Entity Framework criou colunas para receber esses valores que não poderiam receber valores nulos. Ele fez isso para que ao recuperar os dados no banco não houve-se problema na hora de atribuir os valores pois caso fosse possível persistir valores nulos nessas colunas iria dar um erro na hora de recuperar os valores, pois estaria atribuindo valores nulos as propriedades que não podem receber valores nulos, então o framework manteve a integridade na minha aplicação. Então se mesmo assim quiser persistir dados nulos? eu simplesmente coloco "?" no final do tipo da propriedade desta forma: public int? celular { get; set; }.
Agora e as propriedades que podem receber valores nulos e eu não quero que isso aconteça? então uso o DataAnnotations desta forma:
[Required(AllowEmptyStrings=false)]
public string nome_usuario { get; set; }Opa já da pra escrever um livro. kkkkkkkkkk
valeu cara obrigado pela ajuda.