Modelos e esquemas de objetos - .NET SDK
Tipos e esquemas de objetos
Os aplicativos Realm modelam os dados como objetos compostos de pares propriedade-valor, cada um contendo um ou mais tipos de dados primitivos ou outros objetos Realm . Os objetos de Realm são essencialmente os mesmos que os objetos regulares, mas herdam de RealmObject ou EmbeddedObject e incluem funcionalidades adicionais, como exibições de dados de atualização em tempo real e manipuladores de evento de alteração reativos.
Cada objeto do Realm tem um tipo de objeto que se refere à classe do objeto. Objetos do mesmo tipo compartilham um esquema de objeto que define as propriedades e relacionamentos desses objetos.
Schemas
Em C#, você normalmente define esquemas de objetos usando as declarações de classe C#. Quando o Realm é inicializado, ele descobre os objetos do Realm definidos em todos os conjuntos que foram carregados e gera esquemas adequadamente. Essa é a abordagem mais simples para definir um esquema e, geralmente, é a menos propensa a erros. No entanto, essa abordagem inclui todos os objetos de Realm carregados e pode haver casos em que você só deseja usar um subconjunto de classes ou personalizar esquemas de objetos de Realm. Para fazer isso, você pode definir um esquema programaticamente.
Observação
O .NET não carrega um assembly até que você faça referência a uma classe nele, portanto, se você definir seus modelos de objeto em um assembly e instanciar o Realm em outro, certifique-se de chamar um método no assembly que contém os modelos de objeto antes da inicialização. Caso contrário, o Realm não descobrirá os objetos quando carregar pela primeira vez.
Trabalhando com objetos de domínio
O seguinte bloco de código mostra um esquema de objeto que descreve um objeto Dog. Cada objeto Dog deve incluir um Name
e, opcionalmente, pode incluir Age
, Breed
do cachorro e uma lista de pessoas que representa os Owners
do cachorro.
public partial class Dog : IRealmObject { [ ] [ ] public ObjectId Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Breed { get; set; } public IList<Person> Owners { get; } } public partial class Person : IRealmObject { [ ] [ ] public ObjectId Id { get; set; } public string Name { get; set; } // etc... /* To add items to the IList<T>: var dog = new Dog(); var caleb = new Person { Name = "Caleb" }; dog.Owners.Add(caleb); */ }
Observação
Para definir uma coleção de objetos dentro de um objeto, use um IList<T>
com apenas uma getter. Você não precisa inicializá-lo no construtor, pois o domínio gerará uma instância de coleta na primeira vez que a propriedade for acessada.
Observação
Outros exemplos
A seção CRUD - .NET SDK fornece exemplos de criação, leitura, atualização, filtragem e exclusão de objetos do Realm.