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.
Die DynamoDBContext
-Klasse ist der Eintrittspunkt zu der Amazon-DynamoDB-Datenbank. Es stellt eine Verbindung zu DynamoDB her und ermöglicht es Ihnen, auf Ihre Daten in verschiedenen Tabellen zuzugreifen, verschiedene CRUD Operationen durchzuführen und Abfragen auszuführen. Die Klasse DynamoDBContext
-stellt folgende Methoden bereit.
Themen
Erstellen MultiTable BatchGet
Erstellt ein MultiTableBatchGet
-Objekt, das aus verschiedenen einzelnen BatchGet
-Objekten besteht. Jedes dieser BatchGet
-Objekte kann verwendet werden, um Elemente aus einer einzelnen DynamoDB-Tabelle abzurufen.
Um die Elemente aus Tabellen abzurufen, verwenden Sie die Methode ExecuteBatchGet
, indem Sie das MultiTableBatchGet
-Objekt als Parameter übergeben.
Erstellen MultiTable BatchWrite
Erstellt ein MultiTableBatchWrite
-Objekt, das aus verschiedenen einzelnen BatchWrite
-Objekten besteht. Jedes dieser BatchWrite
-Objekte kann für das Schreiben und das Löschen von Elementen in einer einzelnen DynamoDB-Tabelle verwendet werden.
Um zu Tabellen zu schreiben, verwenden Sie die Methode ExecuteBatchWrite
, indem Sie das MultiTableBatchWrite
-Objekt als Parameter übergeben.
CreateBatchGet
Erstellt ein BatchGet
-Objekt, welches für das Abrufen mehrerer Elemente aus einer Tabelle verwenden werden kann.
CreateBatchWrite
Erstellt ein BatchWrite
-Objekt, das Sie zum Ablegen mehrerer Elemente in einer Tabelle oder zum Löschen mehrerer Elemente aus einer Tabelle verwenden können.
Löschen
Löscht ein Element aus der Tabelle. Die Methode erfordert den Primärschlüssel des Elements, das Sie löschen möchten. Sie können entweder den Primärschlüsselwert oder ein clientseitiges Objekt bereitstellen, das einen Primärschlüsselwert als Parameter für diese Methode enthält.
-
Wenn Sie ein clientseitiges Objekt als Parameter angeben und die optimistische Sperre aktiviert haben, ist der Löschvorgang nur dann erfolgreich, wenn die clientseitigen und die serverseitigen Versionen des Objekts übereinstimmen.
-
Wenn Sie lediglich den Primärschlüsselwert als Parameter angeben, ist der Löschvorgang erfolgreich, unabhängig davon, ob die optimistische Sperre aktiv ist oder nicht.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die DeleteAsync
-Methode.
Dispose
Entsorgt alle verwalteten und nicht verwalteten Ressourcen.
ExecuteBatchGet
Liest Daten aus einer oder mehreren Tabellen und verarbeitet alle BatchGet
-Objekte in einem MultiTableBatchGet
.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die ExecuteBatchGetAsync
-Methode.
ExecuteBatchWrite
Liest oder löscht Daten aus einer oder mehreren Tabellen und verarbeitet alle BatchWrite
-Objekte in einem MultiTableBatchWrite
.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die ExecuteBatchWriteAsync
-Methode.
FromDocument
Angesichts einer Document
-Instance, gibt die FromDocument
-Methode eine Instance der clientseitigen Klasse zurück.
Dies ist hilfreich, wenn Sie die Dokumentenmodell-Klassen zusammen mit dem Object Persistence-Modell verwenden möchten, um beliebige Datenoperationen durchzuführen. Weitere Hinweise zu den von der bereitgestellten Dokumentmodellklassen finden Sie unterIch arbeite mit dem. NETDokumentmodell in DynamoDB. AWS SDK for .NET
Angenommen, Sie besitzen ein Document
-Objekt mit dem Namen doc
, das eine Darstellung eines Forum
-Elements enthält. (Informationen zum Konstruieren dieses Objekts finden Sie in der Beschreibung der Methode ToDocument
weiter unten in diesem Thema.) Sie können FromDocument
verwenden, um das Forum
-Element aus dem Document
abzurufen, wie im folgendem C#-Codebeispiel gezeigt.
Beispiel
forum101 = context.FromDocument<Forum>(101);
Anmerkung
Wenn das Document
-Objekt die IEnumerable
-Schnittstelle implementiert, können Sie stattdessen die FromDocuments
-Methode nutzen. Auf diese Weise können Sie alle Klassen-Instances im Document
durchlaufen.
FromQuery
Führt eine Query
-Operation mit den Abfrageparametern aus, die in einem QueryOperationConfig
-Objekt definiert sind.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die FromQueryAsync
-Methode.
FromScan
Führt eine Scan
-Operation mit den Scan-Parametern aus, die in einem ScanOperationConfig
-Objekt definiert sind.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die FromScanAsync
-Methode.
GetTargetTable
Ruft die Zieltabelle für den angegebenen Typ ab. Dies ist nützlich, wenn Sie einen benutzerdefinierten Konverter schreiben, der einer DynamoDB-Tabelle beliebige Daten zuordnet, und ermitteln müssen, welche Tabelle einem benutzerdefinierten Datentyp zugeordnet ist.
Load
Ruft ein Element aus einer Tabelle ab. Die Methode erfordert lediglich den Primärschlüssel des Elements, das Sie abrufen möchten.
Standardmäßig gibt DynamoDB das Element mit Werten die Eventually Consistent sind zurück. Weitere Informationen zum Eventual Consistency-Modell finden Sie unter DynamoDB-Lesekonsistenz.
Load
oder LoadAsync
Methode ruft den GetItemVorgang auf, bei dem Sie den Primärschlüssel für die Tabelle angeben müssen. Da der IndexName
Parameter GetItem
ignoriert wird, können Sie ein Element nicht mithilfe der Partition oder des Sortierschlüssels eines Indexes laden. Daher müssen Sie den Primärschlüssel der Tabelle verwenden, um ein Element zu laden.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die LoadAsync
-Methode. Ein Beispiel für die Verwendung der LoadAsync
Methode zur Ausführung von CRUD Operationen auf hoher Ebene in einer DynamoDB-Tabelle finden Sie im folgenden Beispiel.
/// <summary>
/// Shows how to perform high-level CRUD operations on an Amazon DynamoDB
/// table.
/// </summary>
public class HighLevelItemCrud
{
public static async Task Main()
{
var client = new AmazonDynamoDBClient();
DynamoDBContext context = new DynamoDBContext(client);
await PerformCRUDOperations(context);
}
public static async Task PerformCRUDOperations(IDynamoDBContext context)
{
int bookId = 1001; // Some unique value.
Book myBook = new Book
{
Id = bookId,
Title = "object persistence-AWS SDK for.NET SDK-Book 1001",
Isbn = "111-1111111001",
BookAuthors = new List<string> { "Author 1", "Author 2" },
};
// Save the book to the ProductCatalog table.
await context.SaveAsync(myBook);
// Retrieve the book from the ProductCatalog table.
Book bookRetrieved = await context.LoadAsync<Book>(bookId);
// Update some properties.
bookRetrieved.Isbn = "222-2222221001";
// Update existing authors list with the following values.
bookRetrieved.BookAuthors = new List<string> { " Author 1", "Author x" };
await context.SaveAsync(bookRetrieved);
// Retrieve the updated book. This time, add the optional
// ConsistentRead parameter using DynamoDBContextConfig object.
await context.LoadAsync<Book>(bookId, new DynamoDBContextConfig
{
ConsistentRead = true,
});
// Delete the book.
await context.DeleteAsync<Book>(bookId);
// Try to retrieve deleted book. It should return null.
Book deletedBook = await context.LoadAsync<Book>(bookId, new DynamoDBContextConfig
{
ConsistentRead = true,
});
if (deletedBook == null)
{
Console.WriteLine("Book is deleted");
}
}
}
Abfrage
Abfragen einer Tabelle basierend auf den Abfrageparametern, die Sie bereitstellen.
Sie können eine Tabelle nur dann abfragen, wenn sie über einen zusammengesetzten Primärschlüssel verfügt (Partitionsschlüssel und Sortierschlüssel). Bei der Abfrage müssen Sie einen Partitionsschlüssel und eine Bedingung angeben, die für den Sortierschlüssel gilt.
Angenommen, Sie verfügen über die clientseitige Klasse Reply
, die der Tabelle Reply
in DynamoDB zugeordnet ist. Das folgende C#-Codebeispiel fragt die Tabelle Reply
ab, um alle Forum-Thread-Antworten zu finden, die in den letzten 15 Tagen veröffentlicht wurden. Die Tabelle Reply
verfügt über einen Primärschlüssel, der aus einem Partitionsschlüssel (Id
) und Sortierschlüssel (ReplyDateTime
) besteht.
Beispiel
DynamoDBContext context = new DynamoDBContext(client);
string replyId = "DynamoDB#DynamoDB Thread 1"; //Partition key
DateTime twoWeeksAgoDate = DateTime.UtcNow.Subtract(new TimeSpan(14, 0, 0, 0)); // Date to compare.
IEnumerable<Reply> latestReplies = context.Query<Reply>(replyId, QueryOperator.GreaterThan, twoWeeksAgoDate);
Dies gibt eine Sammlung von Reply
-Objekten zurück.
Die Methode Query
gibt standardmäßig eine „lazy-loaded“ IEnumerable
-Sammlung zurück. Sie gibt anfänglich ausschließlich eine Ergebnisseite zurück und führt dann bei Bedarf einen Dienstaufruf für die nächste Seite durch. Um alle übereinstimmenden Elemente zu erhalten, müssen Sie lediglich die IEnumerable
-Sammlung durchlaufen.
Wenn die Tabelle über einen einfachen Primärschlüssel (Partitionsschlüssel) verfügt, können Sie die Methode Query
nicht verwenden. Stattdessen können Sie die Methode Load
verwenden und den Partitionsschlüssel bereitstellen, um das Element abzurufen.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die QueryAsync
-Methode.
Save
Speichert das angegebene Objekt in der Tabelle. Wenn der im Eingabeobjekt angegebene Primärschlüssel in der Tabelle nicht vorhanden ist, fügt die Methode der Tabelle ein neues Element hinzu. Wenn der Primärschlüssel vorhanden ist, aktualisiert die Methode das vorhandene Element.
Wenn Sie eine optimistische Sperre konfiguriert haben, ist die Aktualisierung nur dann erfolgreich, wenn die client- und serverseitigen Versionen des Elements übereinstimmen. Weitere Informationen finden Sie unter Optimistisches Sperren mit DynamoDB und dem AWS SDK for .NET Objektpersistenzmodell.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die SaveAsync
-Methode.
Scan
Führt einen gesamten Tabellen-Scan durch.
Sie können Scan-Ergebnisse filtern, indem Sie eine Scan-Bedingung angeben. Die Bedingung kann auf jedem Attribut in der Tabelle ausgewertet werden. Angenommen, Sie verfügen über die clientseitige Klasse Book
, die der Tabelle ProductCatalog
in DynamoDB zugeordnet ist. Im folgenden C#-Beispiel werden die Tabelle gescannt und ausschließlich die Book-Elemente zurückgegeben, deren Preis kleiner als 0 ist.
Beispiel
IEnumerable<Book> itemsWithWrongPrice = context.Scan<Book>(
new ScanCondition("Price", ScanOperator.LessThan, price),
new ScanCondition("ProductCategory", ScanOperator.Equal, "Book")
);
Die Methode Scan
gibt standardmäßig eine „lazy-loaded“ IEnumerable
-Sammlung zurück. Sie gibt anfänglich ausschließlich eine Ergebnisseite zurück und führt dann bei Bedarf einen Dienstaufruf für die nächste Seite durch. Um alle übereinstimmenden Elemente zu erhalten, müssen Sie lediglich die IEnumerable
-Sammlung durchlaufen.
Aus Leistungsgründen sollten Sie Ihre Tabellen abfragen und einen Tabellen-Scan vermeiden.
Anmerkung
Um diese Operation im Hintergrund auszuführen, nutzen Sie stattdessen die ScanAsync
-Methode.
ToDocument
Gibt eine Instance der Document
-Dokumentenmodell-Klasse aus Ihrer Klassen-Instance zurück.
Dies ist hilfreich, wenn Sie die Dokumentenmodell-Klassen zusammen mit dem Object Persistence-Modell verwenden möchten, um beliebige Datenoperationen durchzuführen. Weitere Informationen zu den von der bereitgestellten Dokumentmodellklassen finden Sie AWS SDK for .NET unter. Ich arbeite mit dem. NETDokumentmodell in DynamoDB
Angenommen, Sie verfügen über eine clientseitige Klasse, die der Tabelle Forum
zugeordnet ist. Sie können anschließend einen DynamoDBContext
verwenden, um ein Element als Document
-Objekt aus der Tabelle Forum
abzurufen, wie im folgenden C#-Codebeispiel gezeigt.
Beispiel
DynamoDBContext context = new DynamoDBContext(client);
Forum forum101 = context.Load<Forum>(101); // Retrieve a forum by primary key.
Document doc = context.ToDocument<Forum>(forum101);
Optionale Parameter für D angeben ynamoDBContext
Wenn Sie das Object Persistence-Modell verwenden, können Sie für den DynamoDBContext
folgende optionale Parameter angeben.
-
ConsistentRead
– Beim Abrufen von Daten mithilfe derLoad
,Query
oderScan
-Operation können Sie diesen Parameter optional hinzufügen, um die neuesten Werte der Daten anzufordern. -
IgnoreNullValues
– Dieser Parameter teiltDynamoDBContext
mit, Null-Werte von Attributen während einerSave
-Operation zu ignorieren. Wenn dieser Parameter „false“ oder nicht festgelegt ist, wird ein Nullwert als Anweisung interpretiert, das betreffende Attribut zu löschen. -
SkipVersionCheck
— Dieser Parameter teiltDynamoDBContext
mit, beim Speichern oder Löschen von Elementen keine Versionen zu vergleichen. Weitere Informationen über das Versioning finden Sie unter Optimistisches Sperren mit DynamoDB und dem AWS SDK for .NET Objektpersistenzmodell. -
TableNamePrefix
– Stellt allen Tabellennamen eine bestimmte Zeichenfolge voran. Wenn dieser Parameter Null ist (oder nicht festgelegt ist), dann wird kein Präfix verwendet. -
DynamoDBEntryConversion
— Gibt das Konvertierungsschema an, das vom Client verwendet wird. Sie können diesen Parameter auf Version V1 oder V2 setzen. V1 ist die Standardversion.Je nach der von Ihnen festgelegten Version ändert sich das Verhalten dieses Parameters. Beispielsweise:
-
In V1 wird der
bool
Datentyp in denN
Zahlentyp konvertiert, wobei 0 für falsch und 1 für wahr steht. In V2bool
wird konvertiert inBOOL
. -
In V2 werden Listen und Arrays nicht zusammen mit HashSets gruppiert. Listen und Arrays mit numerischen, auf Zeichenketten basierenden Typen und binären Typen werden in den Typ
L
(List) konvertiert, der leer gesendet werden kann, um eine Liste zu aktualisieren. Dies ist anders als bei V1, wo eine leere Liste nicht drahtgebunden gesendet wird.In V1 werden Sammlungstypen wie List und Arrays gleich behandelt. HashSet Liste und HashSet Array von Zahlen werden in den Typ
NS
(Zahlensatz) konvertiert.
Im folgenden Beispiel wird die Version des Konvertierungsschemas auf V2 festgelegt, wodurch sich das Konvertierungsverhalten zwischen den beiden ändert. NETTypen und DynamoDB-Datentypen.
var config = new DynamoDBContextConfig { Conversion = DynamoDBEntryConversion.V2 }; var contextV2 = new DynamoDBContext(client, config);
-
Im folgenden C#-Beispiel wird ein neues erstellt, DynamoDBContext
indem zwei der vorherigen optionalen Parameter angegeben werden, und. ConsistentRead
SkipVersionCheck
Beispiel
AmazonDynamoDBClient client = new AmazonDynamoDBClient();
...
DynamoDBContext context =
new DynamoDBContext(client, new DynamoDBContextConfig { ConsistentRead = true, SkipVersionCheck = true});
DynamoDBContext
berücksichtigt diese optionalen Parameter bei jeder Anforderung, die unter Verwendung dieses Kontextes gesendet werden.
Anstatt diese Parameter auf der DynamoDBContext
-Ebene festzulegen, können Sie diese mithilfe von DynamoDBContext
für einzelne von Ihnen ausgeführte Operationen festlegen, wie im folgenden C#-Codebeispiel gezeigt. Das Beispiel lädt ein bestimmtes Book-Element. Die Load
Methode von DynamoDBContext
gibt die ConsistentRead
und die SkipVersionCheck
optionalen Parameter an.
Beispiel
AmazonDynamoDBClient client = new AmazonDynamoDBClient();
...
DynamoDBContext context = new DynamoDBContext(client);
Book bookItem = context.Load<Book>(productId,new DynamoDBContextConfig{ ConsistentRead = true, SkipVersionCheck = true });
In diesem Fall berücksichtigt DynamoDBContext
diese Parameter ausschließlich beim Senden der Get
-Anforderung.