.NET: Object Persistence-Modell - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

.NET: Object Persistence-Modell

Das AWS SDK for .NET bietet ein Objektpersistenzmodell, mit dem Sie Ihre clientseitigen Klassen Amazon DynamoDB-Tabellen zuordnen können. Die einzelnen Objekt-Instances werden anschließend einem Element in den entsprechenden Tabellen zugeordnet. Zum Speichern der clientseitigen Objekte in den Tabellen stellt das Object-Persistence-Modell die Klasse DynamoDBContext bereit, einen Eintrittspunkt für DynamoDB. Mit dieser Klasse verfügen Sie über eine Verbindung zu DynamoDB, können auf Tabellen zugreifen und verschiedene CRUD-Operationen sowie Abfragen ausführen.

Das Object Persistence-Modell stellt eine Reihe von Attributen bereit, mit deren Hilfe clientseitige Klassen den Tabellen zugeordnet und Eigenschaften/Felder den Tabellenattributen zugeordnet werden können.

Anmerkung

Das Object Persistence-Modell stellt keine API zum Erstellen, Aktualisieren oder Löschen von Tabellen bereit. Es stellt ausschließlich Datenoperationen bereit. Sie können nur die AWS SDK for .NET Low-Level-API verwenden, um Tabellen zu erstellen, zu aktualisieren und zu löschen. Weitere Informationen finden Sie unter Arbeiten mit DynamoDB-Tabellen im .NET.

Das folgende Beispiel zeigt, wie das Object Persistence-Modell funktioniert. Es wird mit der Tabelle ProductCatalog gestartet. Es besitzt Id als Primärschlüssel.

ProductCatalog(Id, ...)

Angenommen, Sie besitzen die Klasse Book mit den Eigenschaften Title, ISBN und Authors. Sie können die Klasse Book der Tabelle ProductCatalog zuordnen, indem Sie die durch das Object Persistence-Modell definierten Attribute hinzufügen wie im folgenden C#-Codeausschnitt gezeigt.

Beispiel
[DynamoDBTable("ProductCatalog")] public class Book { [DynamoDBHashKey] public int Id { get; set; } public string Title { get; set; } public int ISBN { get; set; } [DynamoDBProperty("Authors")] public List<string> BookAuthors { get; set; } [DynamoDBIgnore] public string CoverPage { get; set; } }

Im vorherigen Beispiel ordnet das Attribut DynamoDBTable die Klasse Book der Tabelle ProductCatalog zu.

Das Object Persistence-Modell unterstützt die explizite und das Standardmapping zwischen Klasseneigenschaften und Tabellenattributen.

  • Explizites Mapping – Um eine Eigenschaft einem Primärschlüssel zuzuordnen, müssen Sie die DynamoDBHashKey- und DynamoDBRangeKey-Attribute des „Object-Persistence“-Modells verwenden. Außerdem gilt für andere als Primärschlüsselattribute, dass Sie das Mapping durch explizites Hinzufügen des Attributs DynamoDBProperty definieren müssen, wenn der Name einer Eigenschaft in Ihrer Klasse und des Tabellenattributs, dem Sie diese zuordnen möchten, nicht identisch sind.

    Im vorherigen Beispiel werden die Eigenschaft Id dem Primärschlüssel mit dem gleichen Namen und die Eigenschaft BookAuthors dem Attribut Authors in der Tabelle ProductCatalog zugeordnet.

  • Standard-Mapping – Standardmäßig ordnet das „Object Persistence“-Modell die Klasseneigenschaften den Attributen mit identischem Namen in der Tabelle zu.

    Im vorherigen Beispiel werden die Eigenschaften Title und ISBN den Attributen mit den gleichen Namen in der Tabelle ProductCatalog zugeordnet.

Sie müssen nicht jede einzelne Klasseneigenschaft zuordnen. Sie erkennen diese Eigenschaften, indem Sie das DynamoDBIgnore-Attribut hinzufügen. Wenn Sie eine Book-Instance in die Tabelle hochladen, enthält der DynamoDBContext nicht die CoverPage-Eigenschaft. Diese Eigenschaft wird auch nicht zurückgegeben, wenn Sie die Book-Instance abrufen.

Sie können Eigenschaften von primitiven .NET-Typen wie „int“ und „string“ zuweisen. Sie können auch beliebige Datentypen zuordnen, solange Sie einen geeigneten Konverter bereitstellen, um diese Datentypen einem DynamoDB-Datentyp zuzuordnen. Weitere Informationen zum Mapping beliebiger Datentypen finden Sie unter Zuordnen beliebiger Daten mit DynamoDB mithilfe des AWS SDK for .NET Objektpersistenzmodells.

Das Object Persistence-Modell unterstützt die optimistische Sperre. Während einer Aktualisierung stellt diese Funktion sicher, dass Sie über die neueste Kopie des zu aktualisierenden Elements verfügen. Weitere Informationen finden Sie unter Optimistisches Sperren unter Verwendung einer Versionsnummer mit DynamoDB unter Verwendung des AWS SDK for .NET Objektpersistenzmodells.

Unterstützte Datentypen

Das Object Persistence-Modell unterstützt eine Reihe primitiver .NET-Datentypen, Sammlungen sowie beliebiger Datentypen. Das Modell unterstützt die folgenden primitiven Datentypen.

  • bool

  • byte

  • char

  • DateTime

  • decimal

  • double

  • float

  • Int16

  • Int32

  • Int64

  • SByte

  • string

  • UInt16

  • UInt32

  • UInt64

Das Object Persistence-Modell unterstützt außerdem die .NET-Sammlungstypen. DynamoDBContext ist in der Lage konkrete Sammlungstypen und einfache POCOs (Plain Old CLR Objects) umzuwandeln.

Die folgende Tabelle fasst zusammen, wie die vorangegangenen .NET-Typen den DynamoDB-Typen zugeordnet werden.

.NET-primitiver Typ DynamoDB-Typ

Alle Zahlentypen

N (Zahlentyp)

Alle Zeichenfolgetypen

S (Zeichenfolgetyp)

MemoryStream, Byte []

B (Binärtyp)

bool N (Zahlentyp) 0 repräsentiert False und 1 steht für True.
Sammlungstypen BS-(Binärsatz)-Typ, SS-(Zeichenfolgesatz)-Typ und NS-(Zahlensatz)-Typ.
DateTime S (Zeichenfolgetyp). Die DateTime-Werte werden als ISO-8601-formatierte Zeichenfolgen gespeichert.

Das Object Persistence-Modell unterstützt außerdem beliebige Datentypen. Allerdings müssen Sie einen Konverter-Code bereitstellen, um die komplexen Typen den DynamoDB-Typen zuzuordnen.

Anmerkung
  • Leere Binärwerte werden unterstützt.

  • Das Lesen von leeren Zeichenfolgenwerten wird unterstützt. Leere Zeichenfolgen-Attributwerte werden beim Schreiben zu DynamoDB in Attributwerten vom Typ Zeichenfolgensatz unterstützt. Leere Zeichenfolgen-Attributwerte des Zeichenfolgentyps und leere Zeichenfolgenwerte innerhalb des Listen- oder Map-Typs werden aus Schreibanforderungen gelöscht.