Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kelas DynamoDBContext
adalah titik masuk ke basis data Amazon DynamoDB. Ini menyediakan koneksi ke DynamoDB dan memungkinkan Anda untuk mengakses data Anda dalam berbagai tabel, melakukan CRUD berbagai operasi, dan menjalankan kueri. Kelas DynamoDBContext
menyediakan metode berikut.
Topik
Buat MultiTable BatchGet
Membuat objek MultiTableBatchGet
, yang terdiri dari beberapa objek BatchGet
individual. Setiap objek BatchGet
dapat digunakan untuk mengambil item dari tabel DynamoDB tunggal.
Untuk mengambil item dari tabel, gunakan metode ExecuteBatchGet
, dengan meneruskan objek MultiTableBatchGet
sebagai parameter.
Buat MultiTable BatchWrite
Membuat objek MultiTableBatchWrite
, yang terdiri dari beberapa objek BatchWrite
individual. Setiap objek BatchWrite
dapat digunakan untuk menulis atau menghapus item dalam tabel DynamoDB tunggal.
Untuk menulis ke tabel, gunakan metode ExecuteBatchWrite
, dengan meneruskan objek MultiTableBatchWrite
sebagai parameter.
CreateBatchGet
Membuat objek BatchGet
yang dapat Anda gunakan untuk mengambil beberapa item dari tabel.
CreateBatchWrite
Membuat objek BatchWrite
yang dapat Anda gunakan untuk menempatkan beberapa item ke dalam tabel, atau untuk menghapus beberapa item dari tabel.
Delete
Menghapus item dari tabel. Metode ini memerlukan kunci primer dari item yang ingin Anda hapus. Anda dapat memberikan nilai kunci primer maupun objek sisi klien yang berisi nilai kunci primer sebagai parameter untuk metode ini.
-
Jika Anda menentukan objek sisi klien sebagai parameter dan Anda telah mengaktifkan penguncian optimis, penghapusan hanya akan berhasil jika versi sisi klien dan sisi server objek cocok.
-
Jika Anda hanya menetapkan nilai kunci primer sebagai parameter, penghapusan akan berhasil terlepas dari apakah Anda telah mengaktifkan penguncian optimis atau tidak.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode DeleteAsync
.
Dispose
Membuang semua sumber daya yang dikelola dan tidak dikelola.
ExecuteBatchGet
Membaca data dari satu atau beberapa tabel, yang memproses semua objek BatchGet
dalam MultiTableBatchGet
.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode ExecuteBatchGetAsync
.
ExecuteBatchWrite
Menulis atau menghapus data dalam satu atau beberapa tabel, yang memproses semua objek BatchWrite
dalam MultiTableBatchWrite
.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode ExecuteBatchWriteAsync
.
FromDocument
Mengingat instans Document
, metode FromDocument
akan mengembalikan instans dari kelas sisi klien.
Langkah ini membantu jika Anda ingin menggunakan kelas model dokumen bersama dengan model persistensi objek untuk melakukan operasi data. Untuk informasi selengkapnya tentang kelas model dokumen yang disediakan oleh AWS SDK for .NET, lihatBekerja dengan. NETmodel dokumen di DynamoDB.
Misalkan Anda memiliki objek Document
bernama doc
, yang berisi representasi item Forum
. (Untuk mengetahui cara membuat objek ini, lihat deskripsi untuk metode ToDocument
nanti dalam topik ini.) Anda dapat menggunakan FromDocument
untuk mengambil item Forum
dari Document
, seperti yang ditunjukkan dalam contoh kode C# berikut.
contoh
forum101 = context.FromDocument<Forum>(101);
catatan
Jika objek Document
mengimplementasikan antarmuka IEnumerable
, Anda dapat menggunakan metode FromDocuments
sebagai gantinya. Metode ini memungkinkan Anda melakukan iterasi pada semua instans kelas dalam Document
.
FromQuery
Menjalankan operasi Query
, dengan parameter kueri yang didefinisikan dalam objek QueryOperationConfig
.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode FromQueryAsync
.
FromScan
Menjalankan operasi Scan
, dengan parameter pemindaian yang didefinisikan dalam objek ScanOperationConfig
.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode FromScanAsync
.
GetTargetTable
Mengambil tabel target untuk jenis yang ditentukan. Langkah ini berguna jika Anda menulis konverter khusus untuk memetakan data arbitrer ke tabel DynamoDB, dan Anda perlu menentukan tabel yang terkait dengan jenis data khusus.
Muat
Mengambil item dari tabel. Metode ini hanya memerlukan kunci primer dari item yang ingin Anda ambil.
Secara default, DynamoDB akan mengembalikan item dengan nilai yang akhirnya konsisten. Untuk informasi tentang model konsistensi akhir, lihat DynamoDB membaca konsistensi.
Load
atau LoadAsync
metode memanggil GetItemoperasi, yang mengharuskan Anda untuk menentukan kunci utama untuk tabel. Karena GetItem
mengabaikan IndexName
parameter, Anda tidak dapat memuat item menggunakan partisi indeks atau kunci sortir. Oleh karena itu, Anda harus menggunakan kunci utama tabel untuk memuat item.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode LoadAsync
. Untuk melihat contoh penggunaan LoadAsync
metode untuk melakukan CRUD operasi tingkat tinggi pada tabel DynamoDB, lihat contoh berikut.
/// <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");
}
}
}
Kueri
Mengkueri tabel berdasarkan parameter kueri yang Anda berikan.
Anda dapat mengkueri tabel hanya jika memiliki kunci primer komposit (kunci partisi dan kunci urutan). Saat mengkueri, Anda harus menentukan kunci partisi dan syarat yang berlaku untuk kunci urutan.
Katakanlah Anda memiliki kelas Reply
sisi klien yang dipetakan ke tabel Reply
di DynamoDB. Contoh kode C# berikut mengkueri tabel Reply
untuk menemukan balasan utas dalam forum yang diposting dalam 15 hari terakhir. Tabel Reply
memiliki kunci primer yang berisi kunci partisi Id
dan kunci urutan ReplyDateTime
.
contoh
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);
Tabel ini mengembalikan koleksi objek Reply
.
Metode Query
mengembalikan koleksi IEnumerable
“lazy-loaded”. Metode ini awalnya hanya mengembalikan satu halaman hasil, lalu membuat panggilan layanan untuk halaman berikutnya jika diperlukan. Untuk mendapatkan semua item yang cocok, Anda perlu melakukan iterasi hanya pada IEnumerable
.
Jika tabel Anda memiliki kunci primer sederhana (kunci partisi), Anda tidak dapat menggunakan metode Query
. Sebaliknya, Anda dapat menggunakan metode Load
dan menyediakan kunci partisi untuk mengambil item.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode QueryAsync
.
Save
Menyimpan objek tertentu ke tabel. Jika kunci primer yang ditentukan dalam objek input tidak ada dalam tabel, metode akan menambahkan item baru ke tabel. Jika kunci primer ada, metode akan memperbarui item yang ada.
Jika Anda mengonfigurasi penguncian optimis, pembaruan hanya akan berhasil jika versi klien dan sisi server item cocok. Untuk informasi selengkapnya, lihat Penguncian optimis menggunakan DynamoDB dan model persistensi objek AWS SDK for .NET.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode SaveAsync
.
Pindai
Melakukan pemindaian pada seluruh tabel.
Anda dapat memfilter hasil pemindaian dengan menentukan syarat pemindaian. Syarat ini dapat dievaluasi pada setiap atribut dalam tabel. Katakanlah Anda memiliki kelas sisi klien Book
yang dipetakan ke tabel ProductCatalog
di DynamoDB. Contoh C# berikut memindai tabel dan hanya mengembalikan item buku dengan harga kurang dari 0.
contoh
IEnumerable<Book> itemsWithWrongPrice = context.Scan<Book>(
new ScanCondition("Price", ScanOperator.LessThan, price),
new ScanCondition("ProductCategory", ScanOperator.Equal, "Book")
);
Metode Scan
mengembalikan koleksi IEnumerable
“lazy-loaded”. Metode ini awalnya hanya mengembalikan satu halaman hasil, lalu membuat panggilan layanan untuk halaman berikutnya jika diperlukan. Untuk mendapatkan semua item yang cocok, Anda hanya perlu melakukan iterasi pada IEnumerable
.
Untuk alasan performa, Anda harus mencari tabel dan menghindari pemindaian tabel.
catatan
Untuk melakukan operasi ini di latar belakang, gunakan metode ScanAsync
.
ToDocument
Mengembalikan instans untuk kelas model dokumen Document
dari instans kelas Anda.
Langkah ini membantu jika Anda ingin menggunakan kelas model dokumen bersama dengan model persistensi objek untuk melakukan operasi data. Untuk informasi selengkapnya tentang kelas model dokumen yang disediakan oleh AWS SDK for .NET, lihatBekerja dengan. NETmodel dokumen di DynamoDB.
Misalkan Anda memiliki kelas sisi klien yang dipetakan ke tabel Forum
sampel. Anda kemudian dapat menggunakan DynamoDBContext
untuk mendapatkan item sebagai objek Document
dari tabel Forum
, seperti yang ditunjukkan dalam contoh kode C# berikut.
contoh
DynamoDBContext context = new DynamoDBContext(client);
Forum forum101 = context.Load<Forum>(101); // Retrieve a forum by primary key.
Document doc = context.ToDocument<Forum>(forum101);
Menentukan parameter opsional untuk D ynamoDBContext
Saat menggunakan model persistensi objek, Anda dapat menentukan parameter opsional berikut untuk DynamoDBContext
.
-
ConsistentRead
—Saat mengambil data menggunakan operasiLoad
,Query
, atauScan
, Anda dapat menambahkan parameter opsional ini guna meminta nilai data terbaru. -
IgnoreNullValues
—Parameter ini memberi tahuDynamoDBContext
untuk mengabaikan nilai null pada atribut selama operasiSave
. Jika parameter ini adalah false (atau jika tidak diatur), nilai null ditafsirkan sebagai direktif untuk menghapus atribut tertentu. -
SkipVersionCheck
— Parameter ini memberi tahuDynamoDBContext
untuk tidak membandingkan versi saat menyimpan atau menghapus item. Untuk informasi selengkapnya tentang penentuan versi, lihat Penguncian optimis menggunakan DynamoDB dan model persistensi objek AWS SDK for .NET. -
TableNamePrefix
— Memberikan prefiks pada semua nama tabel dengan string tertentu. Jika parameter ini adalah null (atau jika tidak diatur), tidak ada prefiks yang digunakan. -
DynamoDBEntryConversion
- Menentukan skema konversi yang digunakan oleh klien. Anda dapat mengatur parameter ini ke versi V1 atau V2. V1 adalah versi default.Berdasarkan versi yang Anda tetapkan, perilaku parameter ini berubah. Sebagai contoh:
-
Di V1, tipe
bool
data dikonversi ke tipeN
angka, di mana 0 mewakili false dan 1 mewakili true. Dalam V2,bool
dikonversi keBOOL
. -
Di V2, daftar dan array tidak dikelompokkan bersama. HashSets Daftar dan array numerik, tipe berbasis string, dan tipe berbasis biner dikonversi ke tipe
L
(Daftar), yang dapat dikirim kosong untuk memperbarui daftar. Ini tidak seperti V1, di mana daftar kosong tidak dikirim melalui kabel.Di V1, jenis koleksi, seperti Daftar, HashSet, dan array diperlakukan sama. Daftar, HashSet, dan array numerik dikonversi ke tipe
NS
(jumlah set).
Contoh berikut menetapkan versi skema konversi ke V2, yang mengubah perilaku konversi antara. NETjenis dan tipe data DynamoDB.
var config = new DynamoDBContextConfig { Conversion = DynamoDBEntryConversion.V2 }; var contextV2 = new DynamoDBContext(client, config);
-
Contoh C # berikut membuat yang baru DynamoDBContext
dengan menentukan dua parameter opsional sebelumnya, dan. ConsistentRead
SkipVersionCheck
contoh
AmazonDynamoDBClient client = new AmazonDynamoDBClient();
...
DynamoDBContext context =
new DynamoDBContext(client, new DynamoDBContextConfig { ConsistentRead = true, SkipVersionCheck = true});
DynamoDBContext
menyertakan parameter opsional ini dengan setiap permintaan yang Anda kirimkan menggunakan konteks ini.
Alih-alih mengatur parameter ini di tingkat DynamoDBContext
, Anda dapat menentukannya untuk setiap operasi yang Anda jalankan menggunakan DynamoDBContext
, seperti yang ditunjukkan dalam contoh kode C# berikut. Contoh ini memuat item buku tertentu. Load
Metode DynamoDBContext
menentukan ConsistentRead
dan parameter SkipVersionCheck
opsional.
contoh
AmazonDynamoDBClient client = new AmazonDynamoDBClient();
...
DynamoDBContext context = new DynamoDBContext(client);
Book bookItem = context.Load<Book>(productId,new DynamoDBContextConfig{ ConsistentRead = true, SkipVersionCheck = true });
Dalam kasus ini, DynamoDBContext
menyertakan parameter tersebut hanya ketika mengirimkan permintaan Get
.