Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1261
Assunto : ADO.NET
Titulo: Use o Null Semantics corretamente

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon




Um DbContext possui uma propriedade muito interessante: UseDatabaseNullSemantics

Spoiler: Sempre coloque ele para true e não fique contando com mágicas prontas para resolver problemas.

Veja essa query abaixo:


var
A grande questão é: O que acontece se por acaso a variavel possuir valor null?

Não entendeu a importância disso?

Simples: null no banco de dados não pode usar uma simples igualdade ("="), precisa usar o operador "is"

Por default, o entity framework tenta resolver esse problema para você. A query acima gera uma instrução SQL com vários predicados, testando não só uma comparação direta dos valores mas também fazendo um teste adicional por valores null.

Ocorre que esse teste por valores afeta a performance da query. Então quando ele é adicionado sem que seja realmente necessário isso acaba sendo prejudicial ao sistema.

Evitar é simples: Defina o UseDatabaseNullSemantics para true. Com isso o entity framework para de adicionar checagem de null nas queries SQL.

E o que acontece se a variável for null? A questâo é que você não deveria contar com um funcionamento nessa situação. Seu código deveria prever a possibilidade do null, da seguinte forma:

if (variavel !=null)
result=(from ct in ctx.tabela
where ct.meucampo==variavel
select ct).ToList();
else
result=(from ct in ctx.tabela
where ct.meucampo==null
select ct).ToList();

A query por valor null precisa ser adicionada de forma explicita na query linq, sem uso da variável.

Desta forma: Ligue o UseDatabaseNullSemantics para otimizar sua aplicação e seja cuidadoso no desenvolvimento com valores null

Um plus: Notou como um campo null pode mudar acidentalmente as queries geradas e afetar a performance? Portanto não deixe campos serem criados como nullable por acidente.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br