Versi 4 (V4) dari AWS SDK untuk .NET telah dirilis!
Untuk informasi tentang melanggar perubahan dan memigrasi aplikasi Anda, lihat topik migrasi.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan Ekspresi dengan Amazon DynamoDB dan AWS SDK untuk .NET
catatan
Informasi dalam topik ini khusus untuk proyek berdasarkan .NET Framework dan AWS SDK untuk .NET versi 3.3 dan sebelumnya.
Contoh kode berikut menunjukkan bagaimana menggunakan AWS SDK untuk .NET untuk program DynamoDB dengan ekspresi. Ekspresi menunjukkan atribut yang ingin Anda baca dari item dalam tabel DynamoDB. Anda juga menggunakan ekspresi saat menulis item, untuk menunjukkan kondisi apa pun yang harus dipenuhi (juga dikenal sebagai pembaruan bersyarat) dan bagaimana atribut akan diperbarui. Beberapa contoh pembaruan mengganti atribut dengan nilai baru, atau menambahkan data baru ke daftar atau peta. Untuk informasi selengkapnya, lihat Membaca dan Menulis Item Menggunakan Ekspresi.
Topik
Sampel Data
Contoh kode dalam topik ini bergantung pada dua item contoh berikut dalam tabel DynamoDB bernama. ProductCatalog Barang-barang ini menjelaskan informasi tentang entri produk dalam katalog toko sepeda fiktif. Item ini didasarkan pada contoh yang diberikan dalam Studi Kasus:  ProductCatalog  Item. Deskriptor tipe data sepertiBOOL,,L,M,N, NSS, dan SS sesuai dengan yang ada di Format Data JSON.
{ "Id": { "N": "205" }, "Title": { "S": "20-Bicycle 205" }, "Description": { "S": "205 description" }, "BicycleType": { "S": "Hybrid" }, "Brand": { "S": "Brand-Company C" }, "Price": { "N": "500" }, "Gender": { "S": "B" }, "Color": { "SS": [ "Red", "Black" ] }, "ProductCategory": { "S": "Bike" }, "InStock": { "BOOL": true }, "QuantityOnHand": { "N": "1" }, "RelatedItems": { "NS": [ "341", "472", "649" ] }, "Pictures": { "L": [ { "M": { "FrontView": { "S": "http://example/products/205_front.jpg" } } }, { "M": { "RearView": { "S": "http://example/products/205_rear.jpg" } } }, { "M": { "SideView": { "S": "http://example/products/205_left_side.jpg" } } } ] }, "ProductReviews": { "M": { "FiveStar": { "SS": [ "Excellent! Can't recommend it highly enough! Buy it!", "Do yourself a favor and buy this." ] }, "OneStar": { "SS": [ "Terrible product! Do not buy this." ] } } } }, { "Id": { "N": "301" }, "Title": { "S": "18-Bicycle 301" }, "Description": { "S": "301 description" }, "BicycleType": { "S": "Road" }, "Brand": { "S": "Brand-Company C" }, "Price": { "N": "185" }, "Gender": { "S": "F" }, "Color": { "SS": [ "Blue", "Silver" ] }, "ProductCategory": { "S": "Bike" }, "InStock": { "BOOL": true }, "QuantityOnHand": { "N": "3" }, "RelatedItems": { "NS": [ "801", "822", "979" ] }, "Pictures": { "L": [ { "M": { "FrontView": { "S": "http://example/products/301_front.jpg" } } }, { "M": { "RearView": { "S": "http://example/products/301_rear.jpg" } } }, { "M": { "SideView": { "S": "http://example/products/301_left_side.jpg" } } } ] }, "ProductReviews": { "M": { "FiveStar": { "SS": [ "My daughter really enjoyed this bike!" ] }, "ThreeStar": { "SS": [ "This bike was okay, but I would have preferred it in my color.", "Fun to ride." ] } } } }
Dapatkan Item Tunggal dengan Menggunakan Ekspresi dan Kunci Utama Item
Contoh berikut menampilkan Amazon.DynamoDBv2.AmazonDynamoDBClient.GetItem metode dan satu set ekspresi untuk mendapatkan dan kemudian mencetak item yang memiliki Id dari205. Hanya atribut berikut dari item yang dikembalikan:Id,Title,Description, ColorRelatedItems,Pictures, danProductReviews.
// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.Model; var client = new AmazonDynamoDBClient(); var request = new GetItemRequest { TableName = "ProductCatalog", ProjectionExpression = "Id, Title, Description, Color, #ri, Pictures, #pr", ExpressionAttributeNames = new Dictionary<string, string> { { "#pr", "ProductReviews" }, { "#ri", "RelatedItems" } }, Key = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "205" } } }, }; var response = client.GetItem(request); // PrintItem() is a custom function. PrintItem(response.Item);
Dalam contoh sebelumnya, ProjectionExpression properti menentukan atribut yang akan dikembalikan. ExpressionAttributeNamesProperti menentukan placeholder #pr untuk mewakili ProductReviews atribut dan placeholder #ri untuk mewakili atribut. RelatedItems Panggilan untuk PrintItem merujuk ke fungsi kustom seperti yang dijelaskan dalam Cetak Item.
Dapatkan Beberapa Item dengan Menggunakan Ekspresi dan Kunci Utama Tabel
Contoh berikut menampilkan Amazon.DynamoDBv2.AmazonDynamoDBClient.Query metode dan satu set ekspresi untuk mendapatkan dan kemudian mencetak item yang memiliki Id dari301, tetapi hanya jika nilai Price lebih besar dari150. Hanya atribut berikut dari item yang dikembalikan: IdTitle,, dan semua ThreeStar atribut diProductReviews.
// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.Model; var client = new AmazonDynamoDBClient(); var request = new QueryRequest { TableName = "ProductCatalog", KeyConditions = new Dictionary<string,Condition> { { "Id", new Condition() { ComparisonOperator = ComparisonOperator.EQ, AttributeValueList = new List<AttributeValue> { new AttributeValue { N = "301" } } } } }, ProjectionExpression = "Id, Title, #pr.ThreeStar", ExpressionAttributeNames = new Dictionary<string, string> { { "#pr", "ProductReviews" }, { "#p", "Price" } }, ExpressionAttributeValues = new Dictionary<string,AttributeValue> { { ":val", new AttributeValue { N = "150" } } }, FilterExpression = "#p > :val" }; var response = client.Query(request); foreach (var item in response.Items) { // Write out the first page of an item's attribute keys and values. // PrintItem() is a custom function. PrintItem(item); Console.WriteLine("====="); }
Dalam contoh sebelumnya, ProjectionExpression properti menentukan atribut yang akan dikembalikan. ExpressionAttributeNamesProperti menentukan placeholder #pr untuk mewakili ProductReviews atribut dan placeholder #p untuk mewakili atribut. Price #pr.ThreeStarmenentukan untuk mengembalikan hanya ThreeStar atribut. ExpressionAttributeValuesProperti menentukan placeholder :val untuk mewakili nilai. 150 FilterExpressionProperti menentukan bahwa #p (Price) harus lebih besar dari :val (150). Panggilan untuk PrintItem merujuk ke fungsi kustom seperti yang dijelaskan dalam Cetak Item.
Dapatkan Beberapa Item dengan Menggunakan Ekspresi dan Atribut Item Lainnya
Contoh berikut menampilkan Amazon.DynamoDBv2.AmazonDynamoDBClient.Scan metode dan satu set ekspresi untuk mendapatkan dan kemudian mencetak semua item yang memiliki ProductCategory dariBike. Hanya atribut berikut dari item yang dikembalikan: IdTitle,, dan semua atribut diProductReviews.
// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.Model; var client = new AmazonDynamoDBClient(); var request = new ScanRequest { TableName = "ProductCatalog", ProjectionExpression = "Id, Title, #pr", ExpressionAttributeValues = new Dictionary<string,AttributeValue> { { ":catg", new AttributeValue { S = "Bike" } } }, ExpressionAttributeNames = new Dictionary<string, string> { { "#pr", "ProductReviews" }, { "#pc", "ProductCategory" } }, FilterExpression = "#pc = :catg", }; var response = client.Scan(request); foreach (var item in response.Items) { // Write out the first page/scan of an item's attribute keys and values. // PrintItem() is a custom function. PrintItem(item); Console.WriteLine("====="); }
Dalam contoh sebelumnya, ProjectionExpression properti menentukan atribut yang akan dikembalikan. ExpressionAttributeNamesProperti menentukan placeholder #pr untuk mewakili ProductReviews atribut dan placeholder #pc untuk mewakili atribut. ProductCategory ExpressionAttributeValuesProperti menentukan placeholder :catg untuk mewakili nilai. Bike FilterExpressionProperti menentukan bahwa #pc (ProductCategory) harus sama dengan :catg (Bike). Panggilan untuk PrintItem merujuk ke fungsi kustom seperti yang dijelaskan dalam Cetak Item.
Cetak Item
Contoh berikut menunjukkan bagaimana untuk mencetak atribut item dan nilai-nilai. Contoh ini digunakan dalam contoh sebelumnya yang menunjukkan cara Mendapatkan Item Tunggal dengan Menggunakan Ekspresi dan Kunci Utama Item, Dapatkan Beberapa Item dengan Menggunakan Ekspresi dan Kunci Utama Tabel, dan Dapatkan Beberapa Item dengan Menggunakan Ekspresi dan Atribut Item Lainnya.
// using Amazon.DynamoDBv2.Model; // Writes out an item's attribute keys and values. public static void PrintItem(Dictionary<string, AttributeValue> attrs) { foreach (KeyValuePair<string, AttributeValue> kvp in attrs) { Console.Write(kvp.Key + " = "); PrintValue(kvp.Value); } } // Writes out just an attribute's value. public static void PrintValue(AttributeValue value) { // Binary attribute value. if (value.B != null) { Console.Write("Binary data"); } // Binary set attribute value. else if (value.BS.Count > 0) { foreach (var bValue in value.BS) { Console.Write("\n Binary data"); } } // List attribute value. else if (value.L.Count > 0) { foreach (AttributeValue attr in value.L) { PrintValue(attr); } } // Map attribute value. else if (value.M.Count > 0) { Console.Write("\n"); PrintItem(value.M); } // Number attribute value. else if (value.N != null) { Console.Write(value.N); } // Number set attribute value. else if (value.NS.Count > 0) { Console.Write("{0}", string.Join("\n", value.NS.ToArray())); } // Null attribute value. else if (value.NULL) { Console.Write("Null"); } // String attribute value. else if (value.S != null) { Console.Write(value.S); } // String set attribute value. else if (value.SS.Count > 0) { Console.Write("{0}", string.Join("\n", value.SS.ToArray())); } // Otherwise, boolean value. else { Console.Write(value.BOOL); } Console.Write("\n"); }
Dalam contoh sebelumnya, setiap nilai atribut memiliki beberapa  data-type-specific properti yang dapat dievaluasi untuk menentukan format yang benar untuk mencetak atribut. Properti ini termasukB,BOOL,BS,L,M,N,NS,NULL,S, danSS, yang sesuai dengan yang ada dalam Format Data JSON. Untuk properti sepertiB,N,NULL, danS, jika properti yang sesuai tidaknull, maka atribut adalah tipe null non-data yang sesuai. Untuk properti sepertiBS,, LM,NS, danSS, jika Count lebih besar dari nol, maka atributnya adalah tipe  non-zero-value data yang sesuai. Jika semua  data-type-specific properti atribut adalah salah satu null atau Count sama dengan nol, maka atribut sesuai dengan tipe BOOL data.
Membuat atau Mengganti Item dengan Menggunakan Ekspresi
Contoh berikut menampilkan Amazon.DynamoDBv2.AmazonDynamoDBClient.PutItem metode dan satu set ekspresi untuk memperbarui item yang memiliki Title dari18-Bicycle
        301. Jika item belum ada, item baru ditambahkan.
// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.Model; var client = new AmazonDynamoDBClient(); var request = new PutItemRequest { TableName = "ProductCatalog", ExpressionAttributeNames = new Dictionary<string, string> { { "#title", "Title" } }, ExpressionAttributeValues = new Dictionary<string, AttributeValue> { { ":product", new AttributeValue { S = "18-Bicycle 301" } } }, ConditionExpression = "#title = :product", // CreateItemData() is a custom function. Item = CreateItemData() }; client.PutItem(request);
Dalam contoh sebelumnya, ExpressionAttributeNames properti menentukan placeholder #title untuk mewakili atribut. Title ExpressionAttributeValuesProperti menentukan placeholder :product untuk mewakili nilai. 18-Bicycle 301 ConditionExpressionProperti menentukan bahwa #title (Title) harus sama dengan :product (18-Bicycle
        301). Panggilan untuk CreateItemData mengacu pada fungsi kustom berikut:
// using Amazon.DynamoDBv2.Model; // Provides a sample item that can be added to a table. public static Dictionary<string, AttributeValue> CreateItemData() { var itemData = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "301" } }, { "Title", new AttributeValue { S = "18\" Girl's Bike" } }, { "BicycleType", new AttributeValue { S = "Road" } }, { "Brand" , new AttributeValue { S = "Brand-Company C" } }, { "Color", new AttributeValue { SS = new List<string>{ "Blue", "Silver" } } }, { "Description", new AttributeValue { S = "301 description" } }, { "Gender", new AttributeValue { S = "F" } }, { "InStock", new AttributeValue { BOOL = true } }, { "Pictures", new AttributeValue { L = new List<AttributeValue>{ { new AttributeValue { M = new Dictionary<string,AttributeValue>{ { "FrontView", new AttributeValue { S = "http://example/products/301_front.jpg" } } } } }, { new AttributeValue { M = new Dictionary<string,AttributeValue>{ { "RearView", new AttributeValue {S = "http://example/products/301_rear.jpg" } } } } }, { new AttributeValue { M = new Dictionary<string,AttributeValue>{ { "SideView", new AttributeValue { S = "http://example/products/301_left_side.jpg" } } } } } } } }, { "Price", new AttributeValue { N = "185" } }, { "ProductCategory", new AttributeValue { S = "Bike" } }, { "ProductReviews", new AttributeValue { M = new Dictionary<string,AttributeValue>{ { "FiveStar", new AttributeValue { SS = new List<string>{ "My daughter really enjoyed this bike!" } } }, { "OneStar", new AttributeValue { SS = new List<string>{ "Fun to ride.", "This bike was okay, but I would have preferred it in my color." } } } } } }, { "QuantityOnHand", new AttributeValue { N = "3" } }, { "RelatedItems", new AttributeValue { NS = new List<string>{ "979", "822", "801" } } } }; return itemData; }
Dalam contoh sebelumnya, item contoh dengan data sampel dikembalikan ke pemanggil. Serangkaian atribut dan nilai yang sesuai dibangun, menggunakan tipe data sepertiBOOL,,L,M,N,NS, dan SSS, yang sesuai dengan yang ada dalam Format Data JSON.
Memperbarui Item dengan Menggunakan Ekspresi
Contoh berikut menampilkan Amazon.DynamoDBv2.AmazonDynamoDBClient.UpdateItem metode dan satu set ekspresi untuk mengubah Title ke 18" Girl's Bike untuk item dengan Id dari301.
// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.Model; var client = new AmazonDynamoDBClient(); var request = new UpdateItemRequest { TableName = "ProductCatalog", Key = new Dictionary<string,AttributeValue> { { "Id", new AttributeValue { N = "301" } } }, ExpressionAttributeNames = new Dictionary<string, string> { { "#title", "Title" } }, ExpressionAttributeValues = new Dictionary<string, AttributeValue> { { ":newproduct", new AttributeValue { S = "18\" Girl's Bike" } } }, UpdateExpression = "SET #title = :newproduct" }; client.UpdateItem(request);
Dalam contoh sebelumnya, ExpressionAttributeNames properti menentukan placeholder #title untuk mewakili atribut. Title ExpressionAttributeValuesProperti menentukan placeholder :newproduct untuk mewakili nilai. 18" Girl's Bike UpdateExpressionProperti menentukan untuk mengubah #title (Title) ke :newproduct (18" Girl's
        Bike).
Menghapus Item dengan Menggunakan Ekspresi
Contoh berikut menampilkan Amazon.DynamoDBv2.AmazonDynamoDBClient.DeleteItem metode dan satu set ekspresi untuk menghapus item dengan Id dari301, tetapi hanya jika item Title tersebut18-Bicycle 301.
// using Amazon.DynamoDBv2; // using Amazon.DynamoDBv2.Model; var client = new AmazonDynamoDBClient(); var request = new DeleteItemRequest { TableName = "ProductCatalog", Key = new Dictionary<string,AttributeValue> { { "Id", new AttributeValue { N = "301" } } }, ExpressionAttributeNames = new Dictionary<string, string> { { "#title", "Title" } }, ExpressionAttributeValues = new Dictionary<string, AttributeValue> { { ":product", new AttributeValue { S = "18-Bicycle 301" } } }, ConditionExpression = "#title = :product" }; client.DeleteItem(request);
Dalam contoh sebelumnya, ExpressionAttributeNames properti menentukan placeholder #title untuk mewakili atribut. Title ExpressionAttributeValuesProperti menentukan placeholder :product untuk mewakili nilai. 18-Bicycle 301 ConditionExpressionProperti menentukan bahwa #title (Title) harus sama :product (18-Bicycle
        301).
Info Selengkapnya
Untuk informasi selengkapnya dan contoh kode, lihat:
- 
        Bekerja dengan Item Menggunakan API AWS SDK untuk .NET Tingkat Rendah 
- 
        Mengkueri Tabel Menggunakan API Tingkat AWS SDK untuk .NET Rendah 
- 
        Memindai Tabel Menggunakan API AWS SDK untuk .NET Tingkat Rendah 
- 
        Bekerja dengan Indeks Sekunder Lokal Menggunakan API Tingkat AWS SDK untuk .NET Rendah 
- 
        Bekerja dengan Indeks Sekunder Global Menggunakan API Tingkat AWS SDK untuk .NET Rendah 
