{"id":11561,"date":"2023-03-11T19:00:28","date_gmt":"2023-03-11T15:30:28","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/custom-converters-in-dynamodb-building-robust-data-models-with-ease-4a5c\/"},"modified":"2023-03-11T19:00:28","modified_gmt":"2023-03-11T15:30:28","slug":"custom-converters-in-dynamodb-building-robust-data-models-with-ease-4a5c","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/custom-converters-in-dynamodb-building-robust-data-models-with-ease-4a5c\/","title":{"rendered":"\u0645\u0628\u062f\u0644 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 DynamoDB: \u0633\u0627\u062e\u062a \u0645\u062f\u0644 \u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0642\u0648\u06cc \u0628\u0627 \u0633\u0647\u0648\u0644\u062a"},"content":{"rendered":"<div data-article-id=\"1396290\" id=\"article-body\">\n<p>\u0648\u06cc\u0698\u06af\u06cc \u0645\u0628\u062f\u0644 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc DynamoDB \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0646\u06af\u0627\u0634\u062a \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0628\u06cc\u0646 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0648 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0648\u06cc\u0698\u06af\u06cc-\u0645\u0642\u062f\u0627\u0631 DynamoDB \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0631 \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u06cc\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc\u060c \u0645\u0627\u0646\u0646\u062f enums \u06cc\u0627 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u060c \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0637\u0648\u0631 \u0628\u0648\u0645\u06cc \u062a\u0648\u0633\u0637 DynamoDB \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0634\u0648\u0646\u062f\u060c \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0628\u062f\u0644 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0633\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0642\u062f\u0627\u0631 \u06a9\u062f \u062f\u06cc\u06af \u0628\u062e\u0627\u0631 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u0628\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0648 DynamoDB \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u062f.  \u0645\u0628\u062f\u0644\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc\u0632\u0627\u0646 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0648 DynamoDB \u0645\u0646\u062a\u0642\u0644 \u0634\u0648\u062f \u0648 \u0628\u0627 \u0627\u062c\u0627\u0632\u0647 \u062f\u0627\u062f\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0648\u0634 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0628\u062e\u0634\u0646\u062f.<\/p>\n<p>\u0647\u062f\u0641 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0648 \u0646\u0648\u0639 \u062e\u0627\u0635 \u0645\u0628\u062f\u0644 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 DynamoDB \u0627\u0633\u062a: \u0645\u0628\u062f\u0644 Enum \u0648 \u0645\u0628\u062f\u0644 \u0634\u06cc \u0627\u0631\u0632\u0634.  \u0627\u06cc\u0646 \u0645\u0628\u062f\u0644 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0634\u062a enums \u0648 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0647 \u0648 \u0627\u0632 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u06cc\u0698\u06af\u06cc DynamoDB \u0645\u0641\u06cc\u062f \u0647\u0633\u062a\u0646\u062f.  \u0645\u0627 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u06a9\u062f \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0645\u0648\u0631\u062f \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0645\u0628\u062f\u0644\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 DynamoDB \u0628\u062d\u062b \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p><strong>\u0645\u0628\u062f\u0644 Enum DynamoDB<\/strong> \u0628\u0647 \u0634\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0628\u06cc\u0646 dotnet \u06cc\u0627 \u0647\u0631 \u0632\u0628\u0627\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u062f\u06cc\u06af\u0631 enums \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u06cc\u0698\u06af\u06cc DynamoDB \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.  \u0627\u06cc\u0646 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 DynamoDB \u0628\u0647 \u0637\u0648\u0631 \u0628\u0648\u0645\u06cc \u0641\u0642\u0637 \u0627\u0632 \u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u062d\u062f\u0648\u062f\u06cc \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0645\u0627\u0646\u0646\u062f \u0631\u0634\u062a\u0647 \u0647\u0627\u060c \u0627\u0639\u062f\u0627\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627\u06cc\u0646\u0631\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 Enum Converter\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f enum \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0648\u0645\u06cc \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u06cc\u0698\u06af\u06cc \u062f\u0631 DynamoDB \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Enum Converter \u062f\u0631 DynamoDB \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>using Amazon.DynamoDBv2.DataModel;\nusing Amazon.DynamoDBv2.DocumentModel;\n\npublic enum PaymentMethod\n{\n    CreditCard,\n    PayPal,\n    Bitcoin\n}\n\npublic class PaymentMethodConverter : IPropertyConverter\n{\n    public DynamoDBEntry ToEntry(object value)\n    {\n        return new Primitive((value as PaymentMethod).ToString());\n    }\n\n    public object FromEntry(DynamoDBEntry entry)\n    {\n        return Enum.Parse(typeof(PaymentMethod), entry.AsString());\n    }\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0628\u062f\u0644 \u062f\u0631 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>[DynamoDBTable(\"Orders\")]\npublic class Order\n{\n    [DynamoDBProperty(\"paymentMethod\"), DynamoDBTypeConverter(typeof(PaymentMethodConverter))]\n    public PaymentMethod PaymentMethod { get; set; }\n\n    \/\/ ... other properties and methods\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0627\u0631\u0632\u0634 \u0627\u0634\u06cc\u0627\u0621<\/strong> \u0645\u0641\u0647\u0648\u0645\u06cc \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0646\u0627\u067e\u0630\u06cc\u0631 \u06cc\u0627 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0628\u0627 \u06cc\u06a9 \u0631\u0641\u062a\u0627\u0631 \u062e\u0627\u0635 \u0627\u0633\u062a.  \u0622\u0646\u0647\u0627 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0631\u0627\u06cc \u06a9\u067e\u0633\u0648\u0644\u0647 \u06a9\u0631\u062f\u0646 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u06cc\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0633\u0627\u062f\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f DynamoDB \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc \u06af\u06cc\u0631\u0646\u062f\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f.  \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0646\u0627\u067e\u0630\u06cc\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06af\u06cc\u0631\u0646\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u0645\u0639\u0631\u0636 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u0646\u062f \u0648 \u0647\u06cc\u0686 \u062a\u0646\u0638\u06cc\u0645\u200c\u06a9\u0646\u0646\u062f\u0647 \u06cc\u0627 \u062c\u0647\u0634\u200c\u062f\u0647\u0646\u062f\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0646\u062f\u0627\u0631\u0646\u062f.<\/p>\n<p>\u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06cc\u0627 \u0633\u0627\u062f\u0647 \u0634\u0627\u0645\u0644 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u06cc\u0645\u0646\u06cc \u0646\u0648\u0639\u060c \u06a9\u067e\u0633\u0648\u0644\u0647 \u0633\u0627\u0632\u06cc \u0628\u0647\u062a\u0631 \u0648 \u06a9\u062f \u06af\u0648\u06cc\u0627\u062a\u0631 \u0627\u0633\u062a.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u062d\u062a\u0645\u0627\u0644 \u062e\u0637\u0627\u0647\u0627\u06cc \u0646\u0627\u0634\u06cc \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u06cc\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0646\u0627\u062f\u0631\u0633\u062a \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u062f \u0648 \u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u062a\u0631 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0645\u0628\u062f\u0644 Object Value DynamoDB \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0628\u06cc\u0646 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u06cc\u0698\u06af\u06cc DynamoDB \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0645\u0628\u062f\u0644 \u0634\u06cc \u0627\u0631\u0632\u0634 \u062f\u0631 DynamoDB \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>using Amazon.DynamoDBv2.DataModel;\nusing Newtonsoft.Json;\n\npublic class Address\n{\n    public string Street { get; set; }\n    public string City { get; set; }\n    public string State { get; set; }\n    public string ZipCode { get; set; }\n}\n\npublic class AddressConverter : IPropertyConverter\n{\n    public DynamoDBEntry ToEntry(object value)\n    {\n        return new Primitive(JsonConvert.SerializeObject(value));\n    }\n\n    public object FromEntry(DynamoDBEntry entry)\n    {\n        return JsonConvert.DeserializeObject(entry.AsString(), typeof(Address));\n    }\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0627\u0632 Newtonsoft.Json \/ System.Text \u0628\u0631\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0634\u06cc \u0645\u0642\u062f\u0627\u0631 \u0628\u0647\/\u0627\u0632 \u0631\u0634\u062a\u0647 JSON \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0628\u062f\u0644 \u062f\u0631 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>[DynamoDBTable(\"Customers\")]\npublic class Customer\n{\n    [DynamoDBProperty(\"address\"), DynamoDBTypeConverter(typeof(AddressConverter))]\n    public Address Address { get; set; }\n\n    \/\/ ... other properties and methods\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u062f\u0633\u062a \u0632\u062f\u0646 \u0628\u0647 \u0627\u0634\u06cc\u0627\u0621 \u062a\u0648 \u062f\u0631 \u062a\u0648<\/strong><br \/>\u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a\u060c \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0634\u0645\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0634\u0627\u0645\u0644 \u0627\u0634\u06cc\u0627\u0621 \u062a\u0648\u062f\u0631\u062a\u0648 \u0628\u0627\u0634\u062f\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u06cc\u06a9 \u0634\u06cc \u0634\u0627\u0645\u0644 \u0634\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0627\u0633\u062a.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 \u0645\u0628\u062f\u0644 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0634\u06cc\u0627\u0621 \u062a\u0648\u062f\u0631\u062a\u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>using Amazon.DynamoDBv2.DataModel;\nusing Newtonsoft.Json;\nusing System.Collections.Generic;\n\npublic class Address\n{\n    public string Street { get; set; }\n    public string City { get; set; }\n    public string State { get; set; }\n    public string ZipCode { get; set; }\n}\n\npublic class Customer\n{\n    public string CustomerId { get; set; }\n    public Address Address { get; set; }\n}\n\npublic class Order\n{\n    public string OrderId { get; set; }\n    public Customer Customer { get; set; }\n}\n\npublic class AddressConverter : IPropertyConverter\n{\n    public DynamoDBEntry ToEntry(object value)\n    {\n        return new Primitive(JsonConvert.SerializeObject(value));\n    }\n\n    public object FromEntry(DynamoDBEntry entry)\n    {\n        return JsonConvert.DeserializeObject(entry.AsString(), typeof(Address));\n    }\n}\n\npublic class CustomerConverter : IPropertyConverter\n{\n    public DynamoDBEntry ToEntry(object value)\n    {\n        var customer = (Customer)value;\n        var address = new AttributeValue(new AddressConverter().ToEntry(customer.Address));\n\n        var map = new Dictionary&lt;string, AttributeValue&gt;\n        {\n            {\"CustomerId\", new AttributeValue(customer.CustomerId)},\n            {\"Address\", address}\n        };\n\n        return new AttributeValue(map);\n    }\n\n    public object FromEntry(DynamoDBEntry entry)\n    {\n        var map = entry.M;\n\n        return new Customer\n        {\n            CustomerId = map[\"CustomerId\"].S,\n            Address = (Address)new AddressConverter().FromEntry(map[\"Address\"].S)\n        };\n    }\n}\n\npublic class OrderConverter : IPropertyConverter\n{\n    public DynamoDBEntry ToEntry(object value)\n    {\n        var order = (Order)value;\n        var customer = new AttributeValue(new CustomerConverter().ToEntry(order.Customer));\n\n        var map = new Dictionary&lt;string, AttributeValue&gt;\n        {\n            {\"OrderId\", new AttributeValue(order.OrderId)},\n            {\"Customer\", customer}\n        };\n\n        return new AttributeValue(map);\n    }\n\n    public object FromEntry(DynamoDBEntry entry)\n    {\n        var map = entry.M;\n\n        return new Order\n        {\n            OrderId = map[\"OrderId\"].S,\n            Customer = (Customer)new CustomerConverter().FromEntry(map[\"Customer\"].M)\n        };\n    }\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647\u060c \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0628\u062f\u0644 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 DynamoDB \u0628\u0631\u0627\u06cc \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u0628\u06cc\u0646 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u06cc\u0698\u06af\u06cc DynamoDB \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645.  \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635\u060c \u0645\u0627 \u0628\u0647 Enum Converter \u0648 Value Object Converter \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0646\u06af\u0627\u0634\u062a enums C# \u0648 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u060c \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628\u060c \u0628\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u06cc\u0698\u06af\u06cc DynamoDB \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645.  \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0631\u0627 \u067e\u0648\u0634\u0634 \u062f\u0627\u062f\u0647 \u0627\u06cc\u0645\u060c \u0645\u0627\u0646\u0646\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0634\u06cc\u0627\u0621 \u062a\u0648\u062f\u0631\u062a\u0648 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc\/\u0622\u0634\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc.<\/p>\n<p>\u0645\u0645\u0646\u0648\u0646 \u06a9\u0647 \u062e\u0648\u0627\u0646\u062f\u06cc\u062f \u2764\ufe0f .<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0648\u06cc\u0698\u06af\u06cc \u0645\u0628\u062f\u0644 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc DynamoDB \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0646\u06af\u0627\u0634\u062a \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0628\u06cc\u0646 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0648 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0648\u06cc\u0698\u06af\u06cc-\u0645\u0642\u062f\u0627\u0631 DynamoDB \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0631 \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u06cc\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc\u060c \u0645\u0627\u0646\u0646\u062f enums \u06cc\u0627 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u060c \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0637\u0648\u0631 \u0628\u0648\u0645\u06cc \u062a\u0648\u0633\u0637 DynamoDB \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0634\u0648\u0646\u062f\u060c \u0645\u0641\u06cc\u062f \u0627\u0633\u062a. &hellip;<\/p>\n","protected":false},"author":2,"featured_media":11562,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-11561","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/11561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=11561"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/11561\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/11562"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=11561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=11561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=11561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}