Array
(
)

Como inserir valor Padrão

Hugo
|
MVP
    20 fev 2012

Olá pessoal,
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:
#Código

...
        //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

Rodrigo Odasaki
   - 20 fev 2012

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
|
MVP
    21 fev 2012

Olá Rodrigo,

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,

Rodrigo Odasaki
   - 22 fev 2012

Certo,

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.

#Código

public Cliente VerificarValorPadrao()
{
   return Container.Cliente.Where(c => c.Propriedade.Equals(Valor)).SingleOrDefault();
}


Neste exemplo ele retorna um registro padrão para esta consulta.

Joel Rodrigues
   - 22 fev 2012

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.

class Cliente
{
private DateTime dataCadastro;

public DateTime DataCadastro
{
get { return dataCadastro==default(DateTime)?DateTime.Today:dataCadastro; }
set { dataCadastro = value; }
}
}

Joel Rodrigues
   - 22 fev 2012

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.

class Cliente
{
private DateTime dataCadastro = DateTime.Today;

public DateTime DataCadastro
{
get { return dataCadastro; }
set { dataCadastro = value; }
}
}

Boa sorte.

Hugo
|
MVP
    22 fev 2012

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

Rodrigo Odasaki
   - 22 fev 2012

Beleza,

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.

Joel Rodrigues
   - 22 fev 2012

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.

Abraço.