@@ -183,6 +183,76 @@ public void TestContext_DisableFetchingTableMetadata_KeyWithPropertyConverter()
183
183
Assert . AreEqual ( employee . Name , storedEmployee . Name ) ;
184
184
}
185
185
186
+
187
+ /// <summary>
188
+ /// Tests that disabling fetching table metadata works with a key that has a property converter.
189
+ /// </summary>
190
+ [ TestMethod ]
191
+ [ TestCategory ( "DynamoDBv2" ) ]
192
+ public void TestTransactWrite_AddSaveItem_DocumentTransaction ( )
193
+ {
194
+ TableCache . Clear ( ) ;
195
+ CleanupTables ( ) ;
196
+ TableCache . Clear ( ) ;
197
+
198
+ CreateContext ( DynamoDBEntryConversion . V2 , true , true ) ;
199
+
200
+ {
201
+
202
+ var hashRangeOnly = new AnnotatedRangeTable
203
+ {
204
+ Name = "Bob" ,
205
+ Age = 10
206
+ } ;
207
+
208
+ var transactWrite = Context . CreateTransactWrite < AnnotatedRangeTable > ( ) ;
209
+ transactWrite . AddSaveItem ( hashRangeOnly ) ;
210
+ transactWrite . Execute ( ) ;
211
+
212
+ var storedHashOnly = Context . Load < AnnotatedRangeTable > ( hashRangeOnly . Name , hashRangeOnly . Age ) ;
213
+ Assert . IsNotNull ( storedHashOnly ) ;
214
+ Assert . AreEqual ( hashRangeOnly . Name , storedHashOnly . Name ) ;
215
+ }
216
+
217
+ {
218
+ var hashRangeOnly = new IgnoreAnnotatedRangeTable
219
+ {
220
+ Name = "Bob" ,
221
+ Age = 10 ,
222
+ IgnoreAttribute = 100
223
+ } ;
224
+
225
+ var transactWrite = Context . CreateTransactWrite < IgnoreAnnotatedRangeTable > ( ) ;
226
+ transactWrite . AddSaveItem ( hashRangeOnly ) ;
227
+ transactWrite . Execute ( ) ;
228
+
229
+ var storedHashOnly = Context . Load < IgnoreAnnotatedRangeTable > ( hashRangeOnly . Name , hashRangeOnly . Age ) ;
230
+ Assert . IsNotNull ( storedHashOnly ) ;
231
+ Assert . AreEqual ( hashRangeOnly . Name , storedHashOnly . Name ) ;
232
+ Assert . AreEqual ( hashRangeOnly . Age , storedHashOnly . Age ) ;
233
+ }
234
+
235
+ {
236
+ var hashRangeOnly = new AnnotatedRangeTable2
237
+ {
238
+ Name = "Bob" ,
239
+ Age = 10 ,
240
+ NotAnnotatedAttribute = 100
241
+ } ;
242
+
243
+ var transactWrite = Context . CreateTransactWrite < AnnotatedRangeTable2 > ( ) ;
244
+ transactWrite . AddSaveItem ( hashRangeOnly ) ;
245
+ transactWrite . Execute ( ) ;
246
+
247
+ var storedHashOnly = Context . Load < AnnotatedRangeTable2 > ( hashRangeOnly . Name , hashRangeOnly . Age ) ;
248
+ Assert . IsNotNull ( storedHashOnly ) ;
249
+ Assert . AreEqual ( hashRangeOnly . Name , storedHashOnly . Name ) ;
250
+ Assert . AreEqual ( hashRangeOnly . Age , storedHashOnly . Age ) ;
251
+ Assert . AreEqual ( hashRangeOnly . NotAnnotatedAttribute , storedHashOnly . NotAnnotatedAttribute ) ;
252
+ }
253
+
254
+ }
255
+
186
256
/// <summary>
187
257
/// Tests that the DynamoDB operations can retrieve <see cref="DateTime"/> attributes in UTC and local timezone.
188
258
/// </summary>
@@ -2039,6 +2109,34 @@ public class PropertyConverterEmployee
2039
2109
public Status Name { get ; set ; }
2040
2110
}
2041
2111
2112
+ [ DynamoDBTable ( "HashRangeTable" ) ]
2113
+ public class AnnotatedRangeTable
2114
+ {
2115
+ // Hash key
2116
+ [ DynamoDBHashKey ]
2117
+ public string Name { get ; set ; }
2118
+
2119
+ // Range key
2120
+ [ DynamoDBRangeKey ]
2121
+ internal int Age { get ; set ; }
2122
+ }
2123
+
2124
+ [ DynamoDBTable ( "HashRangeTable" ) ]
2125
+ public class IgnoreAnnotatedRangeTable : AnnotatedRangeTable
2126
+ {
2127
+ [ DynamoDBIgnore ]
2128
+ internal int IgnoreAttribute { get ; set ; }
2129
+ }
2130
+
2131
+
2132
+ [ DynamoDBTable ( "HashRangeTable" ) ]
2133
+ public class AnnotatedRangeTable2 : AnnotatedRangeTable
2134
+ {
2135
+ internal int NotAnnotatedAttribute { get ; set ; }
2136
+ }
2137
+
2138
+
2139
+
2042
2140
public class DateTimeUtcConverter : IPropertyConverter
2043
2141
{
2044
2142
public DynamoDBEntry ToEntry ( object value ) => ( DateTime ) value ;
0 commit comments