Realm com Xamarin Forms

Neste artigo vou apresentar os conceitos e mostrar como usar Realm com Xamarin Forms.


Realm 

Realm é um framework ORM (Object Relational Model). Compatível com com xamarin.
Ele permite que você trabalhe apenas com classes em seu código e fornece um armazenamento seguro na memória ROM do seu dispositivo. No meu ponto de vista é o melhor substituto ao SQLite. Sua versão free permite Salvar , Editar , Remover e Listar entre alguns outros recursos.

Implementação

No projeto que criaremos hoje usarei o prism pela facilidade de dar o start no projeto. Mas você pode usar Xamarin Forms Padrão ou outro framework compatível com xamarin que você desejar.

Vamos lá .

Vamos criar nosso projeto:
Vamos criar apenas Android e iOS que são os mais utilizados, porém o Realm da suporte as outras plataformas.

Projeto criado vamos instalar os pacotes do Realm.

Você deve instalar nos 3 projetos Portable, Android e iOS. Se preocupe apenas em instalar o pacote Realm as dependências serão instaladas automaticamente no seu projeto.

Agora alterar o layout da MainPage.xaml vou utilizar um layout bem simples já que o foco deste artigo não é layout.

Criei um StackLayout com dois botões Criar e Listar já com os Bindings preparados.

Agora no MainPageViewModel vamos criar os Commands apenas pra chamar as navegações para as telas de CRUD.

Agora iremos criar a entidade do Realm. Será essa classe que usaremos para  manipular os dados . Aqui no caso vou usar uma classe Enterprise.cs. Vamos lá.

Note que fizemos uso do Namespace Realms. E herdamos nossa classe do Objeto RealmObject. No seu objeto será necessário identificar uma propriedade como Primary Key para que o realm identifique os objetos. É só isso que o Realm precisa da sua classe para persistir ela na memória ROM do dispositivo.

Certo agora vamos persistir os dados. Vamos criar uma ContentPage com nome de CreatePage e nela vamos adicionar alguns os campos que precisamos para adicionar uma nova Enterprise a nossa memória.

No CreatePageViewModel vamos adicionar os commands e já a lógica de persistência na memória .

A lógica é bem simples . Precisamos apenas pegar a instância do banco 'GetInstance();' Adiciono um próximo Id, crio a entidade e executo o método Write do Realm. 

Importante :  o Realm trabalha com transações , é possivel usar o Método 'BeginWrite()' que retorna uma objeto transaction e depois será necessário executar um transaction.commit();

É isso, pra salvar é apenas esse código. Simples não ?

Agora vamos Fazer a tela de listagem. Crie uma ContentPage chamada ListPage. Nela iremos adicionar uma ListView bem simples apenas mostrando o nome da empresa.


Agora no ListPageViewModel vamos buscar da memória os cadastros e mostrar na ListView que criamos.

Aqui pegamos novamente a instância do banco e pegamos por .All<> passando nossa classe . Esse método retorna um IQueryable<> da classe que pedimos. Sendo assim eu faço um foreach e adiciono na nossa ObservableCollection<> os itens encontrados .

Para listagem é isso.

Agora vamos adicionar uma ContentPage chamada de EditPage. 

Nesta tela você poderá editar ou excluir.
No EditPageViewModel vamos criar a lógica pra edição e exclusão.

Para editar chamamos o método write e depois o Add.
Importante : para que a edição funcione passando o parâmetro update = true. A entidade deve ter uma propriedade Primary Key definida.

No Delete apenas criar uma transaction e dei um remove diretamente na entidade recebida por parâmetro.

Espero que tenha ficado claro.
Na minha opinião o Realm é ate melhor que o SQLite pela sua fácil implementação e segurança.

Link do projeto : GitHub

Comentários

Postar um comentário

Postagens mais visitadas deste blog

Boas Práticas com Realm e Xamarin Forms