Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Configurar e abrir um Realm - .NET SDK

Nesta página

  • Arquivos Realm
  • Arquivos de Realm auxiliar
  • Abra um Realm sem sincronização
  • Realms locais
  • Realms na memória
  • Definindo o escopo do Realm
  • Subconjuntos de classes

Um Realm é um conjunto de objetos relacionados que estão em conformidade com um esquema predefinido. Os domínios podem conter mais de um tipo de dados, desde que exista um esquema para cada tipo.

Cada Realm armazena dados em um arquivo de Realm separado que contém uma codificação binária de cada objeto no Realm. Você pode sincronizar automaticamente um Realm em vários dispositivos e configurar manipuladores de evento reativos que chamam uma função sempre que um objeto em um Realm for criado, modificado ou excluído.

O Realm armazena uma versão codificada binária de cada objeto e digita um Realm em um único arquivo .realm . O arquivo está localizado no caminho definido no objeto RealmConfiguration ao abrir o Realm ou no caminho padrão se você não especificar um caminho.

O Arquivo de Realm padrão é chamado default.realm e está localizado onde o sistema operacional armazena dados específicos do aplicativo.

Dica

Implemente a compactação em seu aplicativo de produção

Todo aplicação de produção deve implementar o ShouldCompactOnLaunch para reduzir periodicamente o tamanho do arquivo do Realm . Para obter mais informações sobre como compactar um Realm, consulte: Reduzir o tamanho do arquivo Realm - .NET SDK.

O Realm cria arquivos adicionais para cada realm:

  • arquivos realm, com sufixo com "realm", por exemplo default.realm: contém dados de objeto.

  • lock, com sufixo "lock", por exemplo default.realm.lock: acompanhe quais versões dos dados em um domínio estão ativamente em uso. Isso impede que o domínio recupere espaço de armazenamento que ainda é usado por um aplicativo cliente.

  • arquivos de nota, com sufixo com "nota", por exemplo default.realm.note: ative as notificações entre threads e entre processos.

  • arquivos de gerenciamento, com sufixo de "gerenciamento", por exemplo default.realm.management: gerenciamento de estado interno.

Excluir esses arquivos tem implicações importantes. Para obter mais informações sobre a exclusão de .realm ou arquivos auxiliares, consulte: Excluir um Realm.

As seções a seguir descrevem como abrir um Arquivo de Realm para uso local (não sincronizado). Se você estiver interessado em usar a sincronização com seu Realm, consulte Configurar e abrir um Realm sincronizado - .NET SDK.

Ao abrir um domínio local (não sincronizado), passe um objeto RealmConfiguration para GetInstanceAsync() ou GetInstance(). O exemplo a seguir cria um objeto RealmConfiguration com um caminho de arquivo local, define a propriedade IsReadOnly como true e abre um domínio local com essas informações de configuração:

var config = new RealmConfiguration(pathToDb + "my.realm")
{
IsReadOnly = true,
};
Realm localRealm;
try
{
localRealm = Realm.GetInstance(config);
}
catch (RealmFileAccessErrorException ex)
{
Console.WriteLine($@"Error creating or opening the
realm file. {ex.Message}");
}

Com um objeto InMemoryConfiguration , você pode criar um domínio que é executado inteiramente na memória (ou seja, sem os dados gravados no disco.) O exemplo a seguir mostra como fazer isso:

var config = new InMemoryConfiguration("some-identifier");
var realm = Realm.GetInstance(config);

Os Realms na memória ainda podem usar espaço em disco se a memória estiver fraca, mas todos os arquivos criados por um Realm na memória serão excluídos quando o Realm for fechado. Ao criar um Realm na memória, o identificador deve ser exclusivo para todos os Realms, inclusive Realms na memória e Realms persistentes.

Importante

Quando um Realm na memória é descartado ou coletado o lixo, os dados são perdidos. Para manter um Realm na memória "vivo" durante a execução do seu aplicativo, certifique-se de manter uma referência ao Realm.

A Instância de Realm implementa o IDisposable para garantir que os recursos nativos sejam liberados. Você deve descartar um Objeto de Realm imediatamente após o uso, especialmente em threads em segundo plano. A maneira mais simples de fazer isso é declarar o Objeto de Realm com uma declaração using ou encapsular o código que interage com um Realm em uma declaração using (...) :

config = new PartitionSyncConfiguration("myPart", user);
using (var realm = Realm.GetInstance(config))
{
var allItems = realm.All<Item>();
}

Se você precisar que um objeto de domínio seja compartilhado fora de um único método, certifique-se de gerenciar seu estado chamando o método Dispose () :

realm.Dispose();

Observação

Como regra geral, você deve descartar o Realm somente em threads em background, porque a eliminação de um Realm invalida todos os objeto associados a essa instância. Se você estiver vinculando dados aos Objeto de Realm na thread principal, por exemplo, não deverá chamar Dispose().

Por padrão, todas as classes do RealmObject são armazenadas em um domínio. Em alguns cenários, talvez você queira limitar as classes que são armazenadas, o que você pode fazer com a propriedade Esquema do objeto RealmConfiguration . O código a seguir demonstra como você especifica duas classes que deseja armazenar no domínio:

var config = new RealmConfiguration()
{
Schema = new Type[]
{
typeof(AClassWorthStoring),
typeof(AnotherClassWorthStoring)
}
};

Voltar

Arquivos Realm