Quantcast
Channel: LINQ – Fernando Henrique Ferreira
Viewing all articles
Browse latest Browse all 19

Entity Framework 5 (Internals)

$
0
0

Neste post gostaria de descrever alguns procedimentos importantes para execução de queries via Entity Framework 5. Acredito que a explicação do funcionamento e da existência destes procedimentos pode ajudar na resolução de cenários mais avançados e no entendimento do funcionamento do Entity Framework.

Unicorn-Sugar-Skull

Cold e Warm Queries

A primeira vez que uma query é executada, o Entity Framework executa muito trabalho para carregar e validar o modelo de dados utilizado.

Essa primeira query é chamada de "Cold query" (consulta fria), pois ela ainda não validou e carregou dados do modelo. Quando esta query é executada novamente, então ela é chamada de "warm query" (consulta morna), que faz proveito dos dados do modelo carregados e validados da primeira query, tornando sua execução mais rápida – isso justifica parte da impressão de que “a segunda execução sempre é mais rápida”.

Existem alguns componentes importantes na compilação das queries, tal como a criação de Mapping Views.

Mapping Views, View Generation e Plans Compilers

Mapping Views são representações executáveis utilizadas para: execução de queries (query view), adequa o modelo do banco de dados ao modelo conceitual e execução de updates (update view), adequa o modelo conceitual ao modelo do banco de dados.

O processo de criação destas views é chamado de View Generation. Sempre que uma view é criada também é validada (modelo conceitual e banco de dados), a fim de garantir sua integridade entre os dois modelos, assegurando que o relacionamento e a cardinalidade entre as entidades realmente faz sentido.

Quando uma consulta é feita sobre uma entidade, a consulta é combinada com sua respectiva query view. O resultado desta combinação é então executado pelo Plan Compiler, para criar uma representação que a fonte de dados possa entender. Diferentes fontes de dados possuem resultados diferentes em seus Plan Compilers. Por exemplo, para o SQL Server o resultado final do Plan Compiler será código T-SQL.

A figura abaixo descreve o processo de compilação e execução de consultas em bancos de dados por meio da engine do Entity Framework.

clip_image002

O desempenho da criação de views depende da quantidade de relacionamentos, tamanho do modelo e a complexidade do modelo.

Cache

Diferentes usos de cache são adotados no Entity Framework, alguns deles são:

Object Caching é um cache de primeiro nível que mantém embutido no ObjectContext instâncias dos objetos retornados em consultas. Este cache é existente apenas no nível do ObjectContext.

O Query Plan Caching armazena comandos (gerados pelo Plan Compiler) que são executados mais de uma vez. A primeira vez que uma query é executada, ela passa pelo Plan Compiler para que crie uma representação que a fonte de dados possa interpretar. Com o Query Plan Caching, a próxima vez que a query for executada ela não passará pelo Plan Compiler, apenas buscará os dados no Query Plan Caching, reaproveitando processamento e evitando a reexecução do Plan Compiler. Este cache existe em nível de AppDomain, isto significa que a cada conexão aberta e/ou ObjectContext (ou DbContext) criado, este cache será único, pois sua existência esta associada a vida útil do AppDomain da aplicação.

Metadata Caching é muito importante, pois mantêm em memória os tipos de dados do modelo e informações do mapeamento entre o modelo conceitual e o modelo do banco de dados. Este também é um cache em nível de AppDomain.

A figura abaixo descreve o processo de compilação e execução de consultas em bancos de dados por meio da engine do Entity Framework fazendo uso dos recursos de cache.

clip_image004

Espero que este post seja útil para o entendimento do funcionamento interno do EF.

Obrigado e bons estudos!

Por
MSc. Fernando Henrique Inocêncio Borba Ferreira
Microsoft Most Valuable Professional – Visual C#

Referências:
http://msdn.microsoft.com/en-us/data/hh949853.aspx
http://www.devproconnections.com/article/entity-framework/entity-framework-5-143875
Programming Entity Framework – Julia Lerman
Programming Entity Framework DbContext – Julia Lerman & Rowan Miller
LINQ – Pocket Reference – Ben Albahari & Joseph Albahari

Agradecimentos:
@MaiconFGuerra e @MayogaX pela leitura e opinião sobre o texto. Obrigado!



Viewing all articles
Browse latest Browse all 19

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Ang Nobela sa “From Darna to ZsaZsa Zaturnnah: Desire and Fantasy, Essays on...


Lola Bunny para colorear


Winx Club para colorear


Girasoles para colorear


Tiburon para colorear


Dibujos para colorear de perros


Dromedario para colorear


Long Distance Relationship Tagalog Love Quotes


Tagalog Long Distance Relationship Love Quotes


RE: Mutton Pies (mely)


Gwapo Quotes : Babaero Quotes


Kung Fu Panda para colorear


Libros para colorear


Mandalas de flores para colorear


Dibujos de animales para imprimir


Renos para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Love Quotes Tagalog


Tropa Quotes


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario



Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC