Docs Menu
Docs Home
/ /
SDK de dispositivos Atlas

Inicio rápido - SDK .NET

Esta guía de inicio rápido muestra cómo usar Realm con el SDK de Realm.NET. También muestra cómo agregar Device Sync con Atlas App Services a su aplicación. Antes de comenzar, asegúrese de tener instalado el SDK de .NET.

Siga estos pasos para agregar el SDK .NET a su proyecto.

Importante

Instalar el SDK para todos los proyectos

Si tiene una solución multiplataforma, asegúrese de instalar el SDK para todos los proyectos de la plataforma, incluso si el proyecto en cuestión no contiene ningún código específico del SDK.

1

En el Explorador de soluciones, haga clic derecho en su solución y seleccione Manage NuGet Packages... para abrir la ventana de administración de paquetes NuGet.

Abra la ventana de administración de paquetes NuGet.
haga clic para ampliar

Nota

Agregar el paquete en el nivel de Solución le permite agregarlo a cada proyecto en un solo paso.

2

En la barra de búsqueda, busca Realm. Selecciona el resultado y haz clic en Add Package. Si usas Xamarin, es posible que se te solicite seleccionar qué proyectos utilizan el paquete Realm. Selecciona todos los proyectos y luego haz clic en Ok.

1

En el Explorador de soluciones, haga clic con el botón derecho en su solución y seleccione Manage NuGet Packages for Solution... para abrir la ventana de administración de paquetes NuGet.

Abra la ventana de administración de paquetes NuGet.
haga clic para ampliar
2

En la barra de búsqueda, busca Realm. Selecciona el resultado y haz clic Install en. Cuando se te solicite, selecciona todos los proyectos y haz clic Ok en.

Busca Realm y agrégalo a tu(s) proyecto(s).
haga clic para ampliar
3

Nota

Puedes omitir este paso si aún no lo estabas usando Comida en su proyecto. Visual Studio generará un archivo correctamente configurado. FodyWeavers.xml archivo para usted cuando realiza la primera compilación.

Si tu proyecto ya usaba Fody, debes agregar manualmente el tejedor de Realm a tu FodyWeavers.xml archivo. Al terminar, tu FodyWeavers.xml archivo debería verse así:

<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Realm />
</Weavers>

Agregue la siguiente línea en la parte superior de sus archivos de origen para usar Realm:

using Realms;

El modelo de objetos de su aplicación define los datos que puede almacenar dentro de Realm y sincronizar hacia y desde App Services.

Importante

Herencia

Todos los objetos Realm heredan de la interfaz IRealmObject, IEmbeddedObject o IAsymmetricObject y deben declararse como 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.

El siguiente código muestra cómo definir un modelo de objeto para un objeto Item. En este ejemplo, hemos marcado el campo Id como clave principal y la propiedad Status como opcional. También hemos optado por usar el atributo MapTo; las propiedades se almacenarán en minúsculas en el servidor, pero podemos usar mayúsculas y minúsculas compatibles con .NET en los nombres de las propiedades al usar Device Sync.

public partial class Item : IRealmObject
{
[PrimaryKey]
[MapTo("_id")]
public ObjectId Id { get; set; } = ObjectId.GenerateNewId();
[MapTo("assignee")]
public string Assignee { get; set; }
[MapTo("name")]
public string? Name { get; set; }
[MapTo("status")]
public string? Status { get; set; }
}

En un reino solo local, se abre con el método Realm.GetInstance() o Realm.GetInstanceAsync(). El método que se use dependerá completamente de si se usan patrones asíncronos en la aplicación y de cómo se usen. El siguiente código muestra cómo GetInstance() usar:

var realm = Realm.GetInstance();

Para más información, consulta: Abre un Realm.

Al crear o actualizar documentos, todas las escrituras deben realizarse en una transacción.

El siguiente código muestra dos métodos para crear un nuevo objeto Realm. En el primer ejemplo, primero creamos el objeto y luego lo añadimos al reino mediante un método WriteAsync(). En el segundo ejemplo, creamos el documento dentro del WriteAsync bloque, que devuelve un objeto Realm con el que podemos seguir trabajando.

var testItem = new Item
{
Name = "Do this thing",
Status = ItemStatus.Open.ToString(),
Assignee = "Aimee"
};
await realm.WriteAsync(() =>
{
realm.Add(testItem);
});
// Or
var testItem2 =
await realm.WriteAsync(() =>
{
return realm.Add<Item>(new Item
{
Name = "Do this thing, too",
Status = ItemStatus.InProgress.ToString(),
Assignee = "Satya"
});
}
);

Insertar un documento es lo mismo que crear uno nuevo, excepto que se establece el parámetro opcional update en true. En este ejemplo, creamos un nuevo objeto Item con un valor único Id. Luego, insertamos un elemento con el mismo ID, pero con un valor Name diferente. Como se ha establecido el parámetro update en true, el registro existente se actualiza con el nuevo nombre.

var id = ObjectId.GenerateNewId();
var item1 = new Item
{
Id = id,
Name = "Defibrillate the Master Oscillator",
Assignee = "Aimee"
};
// Add a new person to the realm. Since nobody with the existing Id
// has been added yet, this person is added.
await realm.WriteAsync(() =>
{
realm.Add(item1, update: true);
});
var item2 = new Item
{
Id = id,
Name = "Fluxify the Turbo Encabulator",
Assignee = "Aimee"
};
// Based on the unique Id field, we have an existing person,
// but with a different name. When `update` is true, you overwrite
// the original entry.
await realm.WriteAsync(() =>
{
realm.Add(item2, update: true);
});
// item1 now has a Name of "Fluxify the Turbo Encabulator"
// and item2 was not added as a new Item in the collection.

También se eliminan elementos dentro de un método WriteAsync(). El siguiente código muestra cómo eliminar un solo Item de la colección y cómo eliminar una colección completa:

realm.Write(() =>
{
realm.Remove(myItem);
});
realm.Write(() =>
{
realm.RemoveAll<Item>();
});

Las siguientes páginas cubren cada uno de estos temas con más detalle:

  • Crear

  • Update

  • Borrar

Se buscan documentos con el motor de consultas Realm, ya sea mediante LINQ o el lenguaje de consultas Realm (RQL). El siguiente ejemplo encuentra todos los objetos de tipo "Elemento":

var allItems = realm.All<Item>();

Los resultados se filtran con LINQ o RQL. Este ejemplo usa LINQ para buscar todos los elementos con estado "Abierto":

var openItems = realm.All<Item>()
.Where(i => i.Status == "Open");

También puede ordenar los resultados utilizando LINQ o RQL:

var sortedItems = realm.All<Item>()
.OrderBy(i => i.Status);

Para obtener detalles sobre cómo consultar, filtrar y ordenar documentos, consulte Filtrar y ordenar datos - .NET SDK.

A medida que cambian las colecciones de documentos, a menudo es importante actualizar los datos en una aplicación cliente. Tú puedes supervisar un realm, colección u objeto para ver cambios con el método SubscribeForNotifications().

El siguiente ejemplo muestra cómo agregar un controlador de notificaciones en una colección de reinos completa:

// Observe realm notifications.
realm.RealmChanged += (sender, eventArgs) =>
{
// The "sender" object is the realm that has changed.
// "eventArgs" is reserved for future use.
// ... update UI ...
};

También puedes agregar controladores de notificaciones a colecciones y objetos individuales. Para más información, consulta Reaccionar ante los cambios.

Si desea sincronizar los datos de Realm entre dispositivos, puede configurar Atlas App Services y habilitar la sincronización de dispositivos. Una vez hecho esto, agregue la sincronización a su código de cliente.

Antes de poder sincronizar los datos de Realm, debes:

En el siguiente código, hemos habilitado la autenticación anónima y utilizamos ownerId como campo único en la configuración de sincronización flexible.

Para usar las funciones de App Services, como la autenticación y la sincronización, accede a tu aplicación de App Services con tu ID de aplicación. Puedes encontrarlo en la interfaz de App Services.

Luego inicializa tu aplicación:

app = App.Create(myRealmAppId);

Al usar Sync, puede definir sus modelos de objetos directamente en el código solo si habilitó Sync con el modo de desarrollo en la interfaz de usuario de App Services.

Nota

Obtener el esquema de la interfaz de usuario si el modo de desarrollo está deshabilitado

Si ha habilitado la sincronización pero ha desactivado el modo de desarrollo, puede copiar y pegar las definiciones del modelo de objetos que App Services generó automáticamente desde la pestaña SDKs en la interfaz de usuario de App Services. Debe volver a habilitar el modo de desarrollo si desea realizar cambios en la definición del modelo de objetos desde el código del cliente.

Para obtener más información, consulte Crear un modelo de datos.

En esta guía de inicio rápido, utilizamos la autenticación anónima para iniciar sesión sin que los usuarios proporcionen información de identificación. Tras autenticar al usuario, puede abrir un reino para él.

var user = await app.LogInAsync(Credentials.Anonymous());

También debes proporcionar un método para que el usuario cierre sesión. El siguiente código muestra cómo hacerlo llamando a LogOutAsync():

await user.LogOutAsync();

El SDK de Realm.NET ofrece muchas maneras adicionales de autenticar, registrar y vincular usuarios. Para conocer otros proveedores de autenticación, consulte: Autenticar usuarios - SDK de .NET.

Una vez que has habilitado Device Sync y autenticado a un usuario, puedes abrir un realm sincronizado. Utiliza un objeto FlexibleSyncConfiguration para controlar las especificaciones de cómo tu aplicación sincroniza datos con App Services. Luego agregas una suscripción Flexible Sync que determina qué datos puede query el usuario.

var config = new FlexibleSyncConfiguration(app.CurrentUser)
{
PopulateInitialSubscriptions = (realm) =>
{
var myItems = realm.All<Item>().Where(n => n.OwnerId == myUserId);
realm.Subscriptions.Add(myItems);
}
};
// The process will complete when all the user's items have been downloaded.
var realm = await Realm.GetInstanceAsync(config);

La sintaxis para leer, escribir y observar notificaciones en un dominio sincronizado es idéntica a la sintaxis para dominios no sincronizados descrita anteriormente. Mientras trabaja con datos locales, un hilo en segundo plano integra, carga y descarga conjuntos de cambios de forma eficiente.

Para obtener información sobre cómo crear una aplicación de App Services habilitada para sincronización, consulte el Tutorial .NET.

Para información sobre cómo implementar Sync en tu código de cliente, consulta Añadir sincronizar dispositivo a una aplicación.

Next

Bienvenido a la Docs de Atlas Device SDK

En esta página