DB4O - Data Base For ObjectsNative Queries Parte 1 (por Jeudi Prando)Antes de iniciar o artigo irei definir uma classe para servir de exemplo nos topicos que serao apresentados.public class Pessoa{private string _nome;private string _sobreNome;private string _sexo;public Pessoa(){this._nome = ;this._sobreNome = ;this._sexo = ;}public Pessoa(string nome, string sobreNome, string sexo){this._nome = nome;this._sobreNome = sobreNome;this._sexo = sexo;}public string Nome{get{ return this._nome; }set{ this._nome = value; }}public string SobreNome{get{ return this._sobreNome; }set{ this._sobreNome = value; }}public string Sexo{get{ return this._sexo; }set{ this._sexo = value; }}}Pronto agora que a nossa classe modelo esta definida vamos ao que interessa.DB4O nos fornece tres tipos de pesquisa Query-By-Example (QBE) SODA API. Native Queries (NQ)Como neste artigo o meu foco e o Native Querie nao falarei sobre os outros tipos de pesquisaO tipo de pesquisa Native Queries (NQ) e o sistema de pesquisa principal do DB4O, recomendada para o uso geral.Nao seria agradavel se pudesse realizar pesquisas utilizando as regras da linguagem de programacao que voce esta utilizando?Nao seria agradavel se todas as suas pesquisas fossem fortemente tipadas?Nao seria agradavel se voce pudesse utilizar todo o poder da Linguagem Orientada a Objeto para realizar as suas pesquisas?Utilize Native Queries(NQ)!Native Queries e a principal sistema de pesquisa do DB4O e e o sistema de pesquisa recomendado para utilizar em sua aplicacao.As pesquisas em Native Querie utilizam a semantica da linguagem de programacao que voce esta utilizando, e uma escolha segura para o futuro.Native Queries (NQ) e fortemente tipado.Native Queries estao disponiveis para todas as plataformas suportadas por DB4O.Native Querie fornecem a habilidade de executar uma ou mais linhas de codigo de encontro a todos as instancias de um objeto em um repositorio de objetosAs expressoes de Native Queries devem retornar verdadeiro para recuperar os objetos que esta sendo testado pela expressao.DB4O tentara otimizar as expressoes de Native Queries e executa-la de encontro aos indices e a busca e otimizada de forma a instanciar de verdadesomente os objetos que irao fazer parte da lista.Essas expressoes sao exatamente as mesmas que voce utiliza em um "if", por exemplo, se retornar verdadeiro o objeto e adicionado a lista se retornarfalso o objeto nao e adicionado a lista.Um exemplo de Expressoes de Native Queries:IList iLista = db.Query(delegate(Pessoa pessoa){return (pessoa.Nome.Contains("a"));});Esta e a expressao da nossa Native Querie utilizada neste exemplo:delegate(Pessoa pessoa){return (pessoa.Nome.Contains("a"));}Esta expressao juntamente com o metodo Query, esta dizendo que e para percorrer todos os objetos do tipo Pessoa "delegate(Pessoa pessoa)" dentro do nosso repositorio de objetos.A cada objeto percorrido sera instanciado no atributo pessoa dentro do delegate"delegate(Pessoa "pessoa")", e sera testado conforme o codigo que vem da sua propria linguagem de programacao,no nosso caso, procura por pessoas que contenham a letra "a" no nome "pessoa.Nome.Contains("a")", se o objeto pessoa atualmente instanciado em "pessoa" tiver a letra "a" no nome a expressaoretornara verdadeiro, fazendo com que o atual objeto pessoa faca parte da lista que sera montada ao termino do percorrer e validar todos os objetos do nosso repositorio de objetos, no nossocaso os objetos do tipo pessoa, gerando assim o nosso famoso "Result Set".vamos ver alguns exemplos, utilizando nossa classe modelo:/// vamos instanciar