Bryan Albrecht

Realm

Realm ist eine mobile Datenbank. Dies bedeutet, dass eine Lokale Datenbank auf dem Endgerät erstellt und verwendet wird.

Aufbau

Realm arbeitet mit Models, welche im Laufe des Programms abgespeichert werden.

Ein Model für Realm könnte wie folgt aussehen:

  1. public class Cat : RealmObject
  2. {
  3.     public string Name { get; set; }
  4.     public int Age { get; set; }
  5.     public Person Owner { get; set; }
  6. }

Wie man sieht, unterscheidet sich das Model nur sehr leicht von einem normalen C# Model.
Diese Models können mit einer Transaktion in die lokale Datenbank gespeichert werden. Mehr dazu jedoch später.
Für Mac Benutzer gibt es einen Browser, mit welchem man die Realm Datenbank visualisieren kann. Dieser sieht wie folgt aus:

Browser

Daten Speichern

Wie bereits erwähnt, kann man mit einer Transaktion Daten in die Datenbank speichern. Dafür gibt es zwei Möglichkeiten.

Möglichkeit 1:

  1. Realm realm;
  2. public Constructor()
  3. {
  4.     realm = Realm.GetInstance();
  5.     realm.Write(() =>
  6. {
  7.         var realmModelObject = realm.CreateObject<DemoModel>();
  8.         modelObject.DemoText = "Text";
  9.         modelObject.DemoInt = 1;
  10.     });
  11. }

Möglichkeit 2:

  1. Realm realm;
  2. public Constructor()
  3. {
  4.     using(var transaction = realm.BeginWrite())
  5.     {
  6.         var realmModelObject = realm.CreateObject<DemoModel>();
  7.         modelObject.DemoText = "Text";
  8.         modelObject.DemoInt = 1;
  9.         transaction.Commit();
  10.     }
  11. }

Daten Lesen

Das Lesen der Daten ist sehr einfach. Wenn man möchte, könnte man eine Abfrage gleich mit LINQ verknüpfen.
Wenn man Daten aus der Datenbank möchte, bekommt man meistens Daten mit dem Typ IEnumerable zurück. Diese kann man dann wie eine Liste oder ein Array behandeln.
Das Auslesen der zuletzt eingetragenen Daten könnte wie folgt aussehen:

  1. Realm realm;
  2. public Constructor()
  3. {
  4.     IEnumerable<DemoModel> textModelList = realm.All<DemoModel>();
  5.         DemoModel demoModel = textModelList.Last();
  6.         string demoText = demoModel.IEnumerable;
  7.         int demiInt = demoModel.DemoInt;
  8. }

Datensatz löschen

Löschen in Realm kann in Realm sehr unkompliziert gemacht werden.
Von Haus aus bietet Realm die Option ein gesamtes Objekt aus der Datenbank zu löschen. Das bedeutet, dass man nur bei einer Funktion ein Objekt angeben muss, damit dieses in der Datenbank verschwindet. Das ganze sieht dann so aus:

  1. Realm realm;
  2. public Constructor()
  3. {
  4.     using(var transaction = realm.BeginWrite())
  5.     {
  6.         realm.Remove (textModel);
  7.         transaction.Commit();
  8.     }
  9. }