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
Muito Bom!!!!!
ResponderExcluir