Como inserir valor Padrão - Fórum DevMedia
Como inserir valor Padrão
Estou aprendendo a usar o Entity Framework 4.1 com a linguagem C# usando o método CODE-FIRST.
Gostaria de saber como faço para colocar um valor padrão nas propriedades abaixo:
//Aqui necessito colocar a data atual
public DateTime dtPublicacao { get; set; }
//Aqui necessito colocar o valor padrão igual a TRUE
public bool Ativado { get; set; }
Não entendi muito bem sua pergunta.
Mas se você deseja definir um valor padrão para as propriedades sempre que for utilizá-las, poderá definir os valores no construtor da sua classe.
Na hora de persistir no banco, basta enviar o objeto para dar o SaveChanges().
É essa sua dúvida?
Hugo Currículo
Vou tentar explicar qual o objetivo quero atingir, por exemplo, quando vc cria um campo em uma tabela diretamente no seu banco de dados, você tem a possibilidade de setar aquele campo com um VALOR DEFAULT. Faço isso muito com datas, ou seja, eu crio um campo data na tabela e coloco como valor default a data atual do sistema.
Eu achei que com o ANNOTATIONS do .NET, eu conseguiria fazer isso.
No Java é possível faze-lo => @MyAnnotation(stringValue = Testing, intValue = 100)
Bom, vc me sugeriu outra forma, como eu sou iniciante em .NET, teria como vc me dar um exemplo?
Eu também sou novo em .NET.
Deixa eu ver se seria isto.
Digamos, você tem um valor padrão em um campo na tabela.
Se for existir apenas um registro, você pode utilizar os métodos prontos do LINQ como o SingleOrDefault() a qual ele busca um valor único ou padrão.
Veja a consulta com lambda expressions utilizando o SingleOrDefault().
Onde o Container é o nome do meu .EDMX e cliente o nome da Tabela.
public Cliente VerificarValorPadrao()
return Container.Cliente.Where(c => c.Propriedade.Equals(Valor)).SingleOrDefault();
Neste exemplo ele retorna um registro padrão para esta consulta.
Bom, vamos lá... na dúvida, vejamos se pode ser isso:
no código que segue, declarei um atributo e uma propriedade do tipo DateTime. No get, se o valor do atributo for o valor padrão de um objeto DateTime(01/01/0001), significa que o valor da propriedade ainda não foi alterado e o retorno será a data atual. Caso já tenha sido atribuído um valor ao atributo, este é retornado normalmente.
private DateTime dataCadastro;
get { return dataCadastro==default(DateTime)?DateTime.Today:dataCadastro; }
set { dataCadastro = value; }
outra forma seria a seguinte: ao declarar o atributo, já atribuir a ele o valor padrão, a menos que o valor da propriedade seja alterado, permanecerá o padrão especificado.
private DateTime dataCadastro = DateTime.Today;
get { return dataCadastro; }
Olá Rodrigo e Joel,
Rodrigo valeu pela dica, será de grande valia pra mim.
Joel, muito obrigado mesmo, era isso que eu queria, ao criar a propriedade já colocar um valor padrão pra ela, até porque estou querendo que minha aplicação trabalhe como hibernate, ou seja, criará o banco de dados automaticamente se ele não existir. Neste caso, eu tenho alguns campos que serão criados já contendo um valor padrão no banco de dados.
Forte abraço aos colegas e muito obrigado
Vale também a do Joel, mas achei que o valor padrão viria sempre do banco, por isso não dei um exemplo em tratar no get da propriedade.
Opa, ficamos felizes por ter ajudado.
Só mais um detalhe: caso você opte por desenhar as classes visualmente, no diagrama do EDMX, existe lá a possibilidade de definir o valor padrão para as propriedades.