Cuando Realm procesa objetos de Realm, genera un esquema para cada clase basándose en sus propiedades. Sin embargo, en ocasiones puede ser necesario definir el esquema manualmente, y el SDK de .NET proporciona un mecanismo para hacerlo.
Importante
Herencia
Todos los objetos de Realm heredan del
Interfaz IRealmObject, IEmbeddedObject o IAsymmetricObject y debe declararse partial clases.
En versiones del SDK de .NET anteriores 10.18.0 a, los objetos derivan de las clases base RealmObject, EmbeddedObject o AsymmetricObject. Este enfoque para la definición del modelo Realm aún se admite, pero no incluye nuevas funciones como las anotaciones de nulabilidad. En una futura versión del SDK, las clases base quedarán obsoletas. Debe usar las interfaces para cualquier clase nueva que escriba y considerar la migración de las clases existentes.
Usa la propiedad Schema
Utilice la propiedad Schema del objeto RealmConfigurationBase para controlar cómo se definen los esquemas. El siguiente ejemplo de código muestra tres maneras de hacerlo, de la más sencilla a la más compleja: configuración automática, configuración manual y una combinación de ambos 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() } };