Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Datos del modelo

Manually Define a Schema - .NET SDK

When Realm processes Realm objects, it generates a schema for each class based on the class properties. However, there may be times that you want to manually define the schema, and the .NET SDK provides a mechanism for doing so.

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 a 10.18.0, los objetos derivan de las clases base RealmObject, EmbeddedObject o AsymmetricObject. Este enfoque para definir el modelo de Realm aún se admite, pero no incluye nuevas funcionalidades como las anotaciones de nulabilidad. En una versión futura del SDK, las clases base quedarán obsoletas. Se debe usar las interfaces para cualquier clase nueva que escribas y considerar migrar tus clases existentes.

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() }
};

Volver

objeto incrustado

En esta página