Como inserir valor Padrão
20/02/2012
0
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; } ...
Abraços
Hugo
Posts
20/02/2012
Rodrigo Odasaki
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?
21/02/2012
Hugo
Obrigado pela resposta.
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?
Abs,
22/02/2012
Rodrigo Odasaki
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.
22/02/2012
Joel Rodrigues
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.
class Cliente
{
private DateTime dataCadastro;
public DateTime DataCadastro
{
get { return dataCadastro==default(DateTime)?DateTime.Today:dataCadastro; }
set { dataCadastro = value; }
}
}
22/02/2012
Joel Rodrigues
class Cliente
{
private DateTime dataCadastro = DateTime.Today;
public DateTime DataCadastro
{
get { return dataCadastro; }
set { dataCadastro = value; }
}
}
Boa sorte.
22/02/2012
Hugo
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
22/02/2012
Rodrigo Odasaki
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.
Abraços.
22/02/2012
Joel Rodrigues
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.
Abraço.
Clique aqui para fazer login e interagir na Comunidade :)