Definir manualmente um esquema - .NET SDK
Nesta página
Quando o Realm processa objetos de Realm , ele gera um esquema para cada classe com base nas propriedades da classe . No entanto, pode haver momentos em que você deseja definir manualmente o esquema, e o .NET SDK fornece um mecanismo para fazer isso.
Importante
Herança
Todos os objetos do Realm herdam a partir da interface IRealmObject, IEmbeddedObject ou IAsymmetricObject e devem ser declarados partial
classes.
Em versões do .NET SDK anteriores a 10.18.0, objetos derivam das classes de base RealmObject, EmbeddedObject ou AsymmetricObject . Essa abordagem para a definição do modelo Realm ainda é suportada, mas não inclui novos recursos, como as anotações de nulidade. Em uma futura versão do SDK, as classes básicas se tornarão obsoletas. Você deve usar as interfaces para quaisquer novas classes que escrever e deve considerar a migração das suas classes existentes.
Usar a propriedade do esquema
Você usa a propriedade Schema do objeto RealmConfigurationBase para controlar como os esquemas são definidos. O exemplo de código a seguir mostra três maneiras de fazer isso, da mais fácil à mais complexa: configuração automática, configuração manual e uma combinação de ambos os métodos.
// By default, all loaded RealmObject classes are included. // Use the RealmConfiguration when you want to // construct a schema for only specific C# classes: var config = new RealmConfiguration { Schema = new[] { typeof(ClassA), typeof(ClassB) } }; // More advanced: construct the schema manually var manualConfig = new RealmConfiguration { Schema = new RealmSchema.Builder { new Builder("ClassA", ObjectType.EmbeddedObject) { Property.Primitive("Id", RealmValueType.Guid, isPrimaryKey: true), Property.Primitive("LastName", RealmValueType.String, isNullable: true, indexType: IndexType.General) } } }; // Most advanced: mix and match var mixedSchema = new ObjectSchema.Builder(typeof(ClassA)); mixedSchema.Add(Property.FromType<int>("ThisIsNotInTheCSharpClass")); // `mixedSchema` now has all of the properties of the ClassA class // and an extra integer property called "ThisIsNotInTheCSharpClass" var mixedConfig = new RealmConfiguration { Schema = new[] { mixedSchema.Build() } };