Menggunakan Model Persistensi Objek - AWS Mobile SDK

AWS Mobile SDK for Xamarin sekarang disertakan dalam AWS SDK for .NET. Panduan ini menjadi referensi versi yang diarsipkan dari Mobile SDK for Xamarin.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan Model Persistensi Objek

AWS Mobile SDK for .NET and Xamarin menyediakan model Persistensi Objek yang memungkinkan Anda memetakan kelas sisi klien Anda ke tabel DynamoDB. Setiap instans objek memetakan ke item dalam tabel yang sesuai. Untuk menyimpan objek sisi klien Anda ke tabel, model Persistensi Objek menyediakan kelas DynamoDBContext, yaitu titik masuk ke DynamoDB. Kelas ini menyediakan koneksi ke DynamoDB dan memungkinkan Anda mengakses tabel, melakukan berbagai operasi CRUD, dan menjalankan kueri.

Model Persistensi Objek tidak menyediakan API untuk membuat, memperbarui, atau menghapus tabel. Model ini hanya menyediakan operasi data. Untuk membuat, memperbarui, dan menghapus tabel, Anda harus menggunakan API tingkat rendah. Untuk petunjuk tentang cara menggunakan API tingkat rendah, lihat Menggunakan API tingkat Layanan DynamoDB.

Gambaran Umum

Model Persistensi Objek menyediakan sekumpulan atribut untuk memetakan kelas sisi klien ke tabel, dan properti/bidang ke atribut tabel. Model Persistensi Objek men-support pemetaan eksplisit dan default antara properti kelas dan atribut tabel.

  • Pemetaan eksplisit: Untuk memetakan properti ke kunci primer, Anda harus menggunakan DynamoDBHashKeydan DynamoDBRangeKeyObjek atribut Model Kegigihan. Selain itu, untuk atribut kunci non-primer, jika nama properti di kelas Anda dan atribut tabel yang sesuai tempat Anda ingin memetakannya tidak sama, maka Anda harus menentukan pemetaan dengan menambahkan atribut DynamoDBProperty secara eksplisit.

  • Pemetaan default - Secara default, model Persistensi Objek memetakan properti kelas ke atribut dengan nama yang sama dalam tabel.

Anda tidak perlu memetakan setiap properti kelas tunggal. Anda mengidentifikasi properti ini dengan menambahkan atribut DynamoDBIgnore. Menyimpan dan mengambil sebuah instans dari sebuah objek akan menghilangkan properti yang ditandai dengan atribut ini.

Tipe Data yang Didukung

Model Persistensi Objek mendukung sekumpulan jenis data .NET primitif, koleksi, dan jenis data arbitrer. Model ini mendukung jenis data primitif berikut.

  • bool

  • byte

  • char

  • DateTime

  • desimal, ganda, mengambang

  • Int16, Int32, Int64

  • SByte

  • string

  • UInT16, UInT32, UInt64

Model Persistensi Objek juga mendukung jenis kumpulan .NET dengan keterbatasan sebagai berikut:

  • Jenis kumpulan harus mengimplementasikan antarmuka ICollection.

  • Jenis kumpulan harus terdiri dari tipe primitif yang didukung. Sebagai contoh, ICollection<string>, ICollection<bool>.

  • Jenis kumpulan harus menyediakan konstruktor nir-parameter.

Untuk informasi lebih lanjut tentang model Persistensi Objek, lihat Model Persistensi Objek .NET.

Membuat Klien DynamoDB

Untuk membuat klien DynamoDB:

var client = new AmazonDynamoDBClient(credentials,region); DynamoDBContext context = new DynamoDBContext(client);

Operasi CRUD

Menyimpan Objek

Membuat objek:

[DynamoDBTable("Books")] public class Book { [DynamoDBHashKey] // Hash key. public string Id { get; set; } [DynamoDBGlobalSecondaryIndexHashKey] public string Author { get; set; } [DynamoDBGlobalSecondaryIndexRangeKey] public string Title { get; set; } public string ISBN { get; set; } public int Price { get; set; } public string PageCount { get; set; } } Book myBook = new Book { Id = id, Author = "Charles Dickens", Title = "Oliver Twist", ISBN = "111-1111111001", Price = 10, PageCount = 300 };

Menyimpan objek ke tabel DynamoDB:

context.Save(myBook);

Mengambil Objek

Untuk mengambil sebuah objek:

Book retrievedBook = context.Load<Book>(1);

Memperbarui Obyek

Untuk memperbarui objek:

Book retrievedBook = context.Load<Book>(1); retrievedBook.ISBN = "111-1111111001"; context.Save(retrievedBook);

Menghapus Objek

Untuk menghapus objek:

Book retrievedBook = context.Load<Book>(1); context.Delete(retrievedBook);

Melakukan Kueri dan Pemindaian

Untuk melakukan kueri dan mengambil semua buku yang penulisnya adalah “Charles Dickens”:

public async Task QueryAsync(AWSCredentials credentials, RegionEndpoint region) { var client = new AmazonDynamoDBClient(credentials, region); DynamoDBContext context = new DynamoDBContext(client); var search = context.FromQueryAsync < Book > (new Amazon.DynamoDBv2.DocumentModel.QueryOperationConfig() { IndexName = "Author-Title-index", Filter = new Amazon.DynamoDBv2.DocumentModel.QueryFilter("Author", Amazon.DynamoDBv2.DocumentModel.QueryOperator.Equal, "Charles Dickens") }); Console.WriteLine("items retrieved"); var searchResponse = await search.GetRemainingAsync(); searchResponse.ForEach((s) = > { Console.WriteLine(s.ToString()); }); }

Memindai contoh kode di bawah ini akan mengembalikan semua buku dalam tabel kami:

public async Task ScanAsync(AWSCredentials credentials, RegionEndpoint region) { var client = new AmazonDynamoDBClient(credentials, region); DynamoDBContext context = new DynamoDBContext(client); var search = context.FromScanAsync < Book > (new Amazon.DynamoDBv2.DocumentModel.ScanOperationConfig() { ConsistentRead = true }); Console.WriteLine("items retrieved"); var searchResponse = await search.GetRemainingAsync(); searchResponse.ForEach((s) = > { Console.WriteLine(s.ToString()); }); }