{"id":13618,"date":"2022-08-02T09:46:48","date_gmt":"2022-08-02T16:46:48","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=13618"},"modified":"2025-06-13T20:56:42","modified_gmt":"2025-06-14T03:56:42","slug":"asp-net-crud-nosql-part-5","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-crud-nosql-part-5\/","title":{"rendered":"NoSQL\uc744 \uc0ac\uc6a9\ud55c ASP.NET Core CRUD: 5\ubd80"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">\uc774 ASP.NET Core CRUD \uc2dc\ub9ac\uc988\uac00 \uace7 \ub05d\ub0a9\ub2c8\ub2e4. \uc9c0\uae08\uae4c\uc9c0 \ub2e4\ub8ec \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-core-crud-with-nosql-part-1\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc124\uc815(1\ubd80)<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-crud-nosql-part-2\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">SQL++\ub85c \uc77d\uae30(2\ubd80)<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-core-crud-nosql-part-3\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\ud0a4-\uac12\uc73c\ub85c \uc77d\uae30(3\ubd80)<\/span><\/a><span style=\"font-weight: 400;\">\ubc0f <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-core-crud-nosql-part-4\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc0dd\uc131\/\uc5c5\ub370\uc774\ud2b8(4\ubd80)<\/span><\/a><span style=\"font-weight: 400;\">. \uc774 \ub9c8\uc9c0\ub9c9 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 <strong>D<\/strong> in <strong>CRUD<\/strong>: <em>\uc0ad\uc81c<\/em>.<\/span><\/p>\n<h2><b>SQL++ \ub610\ub294 \ud0a4-\uac12\uc73c\ub85c \uc0ad\uc81c\ud558\uae30<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\ud328\ud134\uc744 \ub208\uce58\ucc44\uc168\uae38 \ubc14\ub78d\ub2c8\ub2e4. \uc77d\uae30, \ub9cc\ub4e4\uae30, \uc5c5\ub370\uc774\ud2b8\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uc0ad\uc81c\uc5d0\ub3c4 \uc5ec\ub7ec \uac00\uc9c0 \uacbd\ub85c\uac00 \uc788\uc2b5\ub2c8\ub2e4. SQL++\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/span><em><span style=\"font-weight: 400;\">\uc0ad\uc81c<\/span><\/em><span style=\"font-weight: 400;\"> \ubb38\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">DELETE FROM demo._default.wishlist w\r\nWHERE META(w).id = \"1c3de2e7-70ea-4ee2-803b-425bbf6251cb\"<\/pre>\n<p><span style=\"font-weight: 400;\">\ub610\ub294 \ud0a4-\uac12 \uc0ad\uc81c \uc791\uc5c5(\uc77c\uba85 \"<em>\uc81c\uac70<\/em>&#8220;):<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">await collection.RemoveAsync(\"1c3de2e7-70ea-4ee2-803b-425bbf6251cb\");<\/pre>\n<p><span style=\"font-weight: 400;\">\uadf8\ub9ac\uace0 \uc774\uc804\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c \uc5b4\ub5a4 \uac83\uc744 \uc0ac\uc6a9\ud560\uc9c0 \uacb0\uc815\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub294 \ub9e4\uc6b0 \uc720\uc0ac\ud55c \uac00\uc774\ub4dc\ub77c\uc778\uc774 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\uc0ac\uc6a9 \uc0ac\ub840<\/strong><\/td>\n<td><strong>\ud0a4 \uac12?<\/strong><\/td>\n<td><strong>\uc65c \ub610\ub294 \uc65c \uc548 \ub420\uae4c\uc694?<\/strong><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">\ud0a4 \"73892\"\ub85c \uc0ac\uc6a9\uc790 \uc0ad\uc81c\ud558\uae30<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\uc608<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\uc9c1\uc811 \uc561\uc138\uc2a4<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">\ud0a4\uac00 \"73892\", \"47212\", \"90491\"\uc778 \uc0ac\uc6a9\uc790 \uadf8\ub8f9\uc744 \uc0ad\uc81c\ud569\ub2c8\ub2e4.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\uc608<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\uc774 \uacbd\uc6b0 \uc5ec\ub7ec \ud0a4-\uac12 \uc5f0\uc0b0\uc774 \ud544\uc694\ud560 \uc218 \uc788\uc9c0\ub9cc \uc5ec\uc804\ud788 SQL\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\ubcf4\ub2e4 \ube60\ub97c \uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/span><em><span style=\"font-weight: 400;\">\uc0ad\uc81c ... \uc5b4\ub514\uc11c ... \uc5d0\uc11c<\/span><\/em><span style=\"font-weight: 400;\"> \ucffc\ub9ac.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">\"Ohio\"\uc5d0\uc11c \ubaa8\ub4e0 \uc0ac\uc6a9\uc790 \uc0ad\uc81c<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\uc544\ub2c8\uc694<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\uc0ac\uc6a9\uc790\uc758 \uc0c1\ud0dc\ub294 \ud0a4\uac00 \uc544\ub2cc '\ubcf4\uc870' \uc18d\uc131\uc77c \uac00\ub2a5\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4(\uc5ec\ub7ec \uc0ac\uc6a9\uc790\uac00 \uc624\ud558\uc774\uc624\uc5d0 \uc788\uc744 \uc218 \uc788\uc74c). \uc774\ub294 SQL++\uc758 \uc88b\uc740 \uc0ac\uc6a9 \uc0ac\ub840\uc785\ub2c8\ub2e4. <\/span><span style=\"font-weight: 400;\">\uc0ad\uc81c<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>ASP.NET Core\uc6a9 \uc5d4\ub4dc\ud3ec\uc778\ud2b8 \uc0ad\uc81c<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\uc774\ub97c \uc5fc\ub450\uc5d0 \ub450\uace0 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ad\uc81c \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ub9cc\ub4dc\uc138\uc694:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">[HttpDelete]\r\n[Route(\"api\/delete\")]\r\npublic async Task&lt;IActionResult&gt; Delete(Guid id)\r\n{\r\n\u00a0 \u00a0 var bucket = await _bucketProvider.GetBucketAsync(\"demo\");\r\n\u00a0 \u00a0 var collection = await bucket.CollectionAsync(\"wishlist\");\r\n\r\n\u00a0 \u00a0 await collection.RemoveAsync(id.ToString());\r\n\r\n\u00a0 \u00a0 return Ok(new { success = true });\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">\uc774 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c OpenAPI\/Swagger\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud574 \ubcf4\uba74 \uc608\uc0c1\ub300\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13620\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/08\/delete-endpoint-couchbase-asp-net-api.png\" alt=\"Swagger API view of Couchbase ASP.NET endpoints\" width=\"828\" height=\"745\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/delete-endpoint-couchbase-asp-net-api.png 828w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/delete-endpoint-couchbase-asp-net-api-300x270.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/delete-endpoint-couchbase-asp-net-api-768x691.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/delete-endpoint-couchbase-asp-net-api-20x18.png 20w\" sizes=\"auto, (max-width: 828px) 100vw, 828px\" \/><\/p>\n<h2><b>\uc815\ub9d0 \uc0ad\uc81c\ud574\uc57c \ud558\ub098\uc694?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\ub9ce\uc740 \uc0ac\uc6a9 \uc0ac\ub840\uc5d0\uc11c \ub2e4\uc74c\uc744 \uc6d0\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/span><b>\uc2e4\uc81c\ub85c<\/b><span style=\"font-weight: 400;\"> \ub370\uc774\ud130\ub97c \uc0ad\uc81c\ud569\ub2c8\ub2e4. '\uc18c\ud504\ud2b8' \uc0ad\uc81c\ub77c\uace0 \ud558\ub294 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc5ec\uc804\ud788 \uc874\uc7ac\ud558\uc9c0\ub9cc \ucd5c\uc885 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ub354 \uc774\uc0c1 \ud45c\uc2dc\ub418\uc9c0 \uc54a\ub3c4\ub85d \ub370\uc774\ud130\ub97c \uc774\ub3d9\ud558\uac70\ub098 \ud45c\uc2dc\ud558\ub294 \uc791\uc5c5\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4. \uc774 \ubc29\ubc95\uc740 \uac80\uc0c9, \ubcf5\uad6c \ubc0f \ubcf4\uace0\uac00 \uac00\ub2a5\ud558\ub2e4\ub294 \uc7a5\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub610\ud55c JSON NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc720\uc5f0\uc131\uc744 \ubcf4\uc5ec\uc904 \uc218 \uc788\ub294 \uc88b\uc740 \uae30\ud68c\uc774\uae30\ub3c4 \ud569\ub2c8\ub2e4.<\/span><\/p>\n<h2><b>\uc18c\ud504\ud2b8 \uc0ad\uc81c<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\uc704\uc2dc\ub9ac\uc2a4\ud2b8 \ud56d\ubaa9\uc5d0 '\uc0ad\uc81c\ub428' \ud544\ub4dc\ub97c \ub3c4\uc785\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \ud544\ub4dc\uc5d0\ub294 \ud56d\ubaa9\uc774 \uc0ad\uc81c\ub41c \ub0a0\uc9dc\/\uc2dc\uac04\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4. \uc774 \ud544\ub4dc\uac00 \uc874\uc7ac\ud558\uba74 \ub098\uba38\uc9c0 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \uc774 \ud56d\ubaa9\uc744 \uc0ad\uc81c\ub41c \uac83\uc73c\ub85c \uac04\uc8fc\ud574\uc57c \ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ud544\uc694\ud55c \uacbd\uc6b0 \uc5ec\uc804\ud788 \ud574\ub2f9 \ud56d\ubaa9\uc744 \ucffc\ub9ac\ud558\uace0, \ubcf4\uace0\ud558\uace0, \ubcf5\uad6c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uacbd\uc6b0, \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub824\uba74 <\/span><em><span style=\"font-weight: 400;\">ALTER<\/span><\/em><span style=\"font-weight: 400;\">. \ub370\uc774\ud130\uc758 \ud06c\uae30\uc5d0 \ub530\ub77c \uc57d\uac04\uc758 \ub2e4\uc6b4\ud0c0\uc784\uc774 \ud544\uc694\ud558\uac70\ub098 \ub9ce\uc740 NULL \uac12\uc774 \ud544\uc694\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. JSON \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c\ub294 \uc0c8 \ud544\ub4dc\uc5d0 \ub300\ud574 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc544\ubb34 \uac83\ub3c4 \uc54c\ub9b4 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc0ac\uc6a9\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <\/span><a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/howtos\/subdocument-operations.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\ud558\uc704 \ubb38\uc11c API<\/span><\/a><span style=\"font-weight: 400;\"> \ub97c \ucd94\uac00\ud558\ub824\uba74 \"<em>\uc0ad\uc81c\ub428<\/em>' \ud544\ub4dc\ub97c \ubb38\uc11c\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ud558\uc704 \ubb38\uc11c\ub294 \ubb38\uc11c\uc5d0 \ub300\ud55c <\/span><b>\ubd80\ubd84<\/b><span style=\"font-weight: 400;\"> \uc744 \uc81c\uac70\ud558\uace0 \ub098\uba38\uc9c0\ub294 \uadf8\ub300\ub85c \ub461\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">[HttpDelete]\r\n[Route(\"api\/softDelete\")]\r\npublic async Task&lt;IActionResult&gt; SoftDelete(Guid id)\r\n{\r\n\u00a0 \u00a0 var bucket = await _bucketProvider.GetBucketAsync(\"demo\");\r\n\u00a0 \u00a0 var collection = await bucket.CollectionAsync(\"wishlist\");\r\n\r\n\u00a0 \u00a0 await collection.MutateInAsync(id.ToString(),\r\n\u00a0 \u00a0 \u00a0 \u00a0 options =&gt; options.Upsert(\"deleted\", DateTime.Now));\r\n\r\n\u00a0 \u00a0 return Ok(new { success = true });\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">(\ub2e4\uc74c \uc0ac\ud56d\uc744 \ud655\uc778\ud558\uc138\uc694. <\/span><span style=\"font-weight: 400;\">\uc0ac\uc6a9 <em>Couchbase.KeyValue;<\/em><\/span><span style=\"font-weight: 400;\"> \uac00 \ub9e8 \uc704\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. <em>\uc120\ubb3c \ucee8\ud2b8\ub864\ub7ec<\/em> \ud30c\uc77c)<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc774 \ucf54\ub4dc\ub294 Couchbase\uc5d0 \uba85\ub839\uc744 \ubcf4\ub0c5\ub2c8\ub2e4: <\/span><span style=\"font-weight: 400;\">\ub77c\ub294 \ud544\ub4dc\ub97c \uc0bd\uc785\ud558\uc5ec \ud574\ub2f9 ID\ub97c \uac00\uc9c4 \ubb38\uc11c\uc5d0 \ub300\ud574 \"<em>\uc0ad\uc81c\ub428<\/em>\"\ub97c \uc785\ub825\ud558\uace0 \ud604\uc7ac \ub0a0\uc9dc\/\uc2dc\uac04\uc744 \uac12\uc73c\ub85c \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ud558\uc704 \ubb38\uc11c\ub97c \uc0ac\uc6a9\ud558\uba74 \uae30\uc874 \ubb38\uc11c\ub97c \uba3c\uc800 \ub85c\ub4dc\ud560 \ud544\uc694\uac00 \uc5c6\uace0, \uc218\uc815\ub41c \ubb38\uc11c \uc804\uccb4\ub97c \uc720\uc120\uc73c\ub85c \ub2e4\uc2dc \ubcf4\ub0bc \ud544\uc694\ub3c4 \uc5c6\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2><b>\uc18c\ud504\ud2b8 \uc0ad\uc81c\ub41c \ub370\uc774\ud130<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\ucd5c\uc885 \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ubb38\uc11c\uac00 \ub429\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">{\r\n\u00a0 \"name\": \"Digital Photo Frame\",\r\n\u00a0 \"deleted\": \"2022-04-21T11:05:26.1766248-04:00\"\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">\uc704\uc2dc\ub9ac\uc2a4\ud2b8\uc5d0 \uc788\ub294 \ub2e4\ub978 \ubb38\uc11c\ub4e4\uc740 <\/span><b>not<\/b><span style=\"font-weight: 400;\"> \ub97c <\/span><span style=\"font-weight: 400;\">\uc0ad\uc81c\ub428<\/span><span style=\"font-weight: 400;\"> \ud544\ub4dc\uc785\ub2c8\ub2e4. \uc5ec\uc804\ud788 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcf4\uc785\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">{\r\n\u00a0 \"name\": \"Skyline Chili 2XL T-Shirt\"\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">\uadf8\ub9ac\uace0<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">{\r\n\u00a0 \"name\": \"Joey Votto jersey\"\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">\uc774\ub4e4\uc740 <\/span><em><span style=\"font-weight: 400;\">\"\uc0ad\uc81c\ub428\": null<\/span><\/em><span style=\"font-weight: 400;\"> \ud544\ub4dc\uc5d0 <\/span><span style=\"font-weight: 400;\">&#8220;<em>\uc0ad\uc81c\ub428<\/em>&#8220;<\/span><span style=\"font-weight: 400;\"> \ud544\ub4dc\ub97c \uc804\ud600 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2><b>\uc18c\ud504\ud2b8 \uc0ad\uc81c\ub41c SELECT<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\ub370\uc774\ud130\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. <\/span><b>\ud45c\uc2dc<\/b><span style=\"font-weight: 400;\"> \uac00 \uc0ad\uc81c\ub41c \uac83\uc73c\ub85c \ud45c\uc2dc\ub418\uc9c0\ub9cc \uc5ec\uc804\ud788 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub0a8\uc544 \uc788\uc2b5\ub2c8\ub2e4. \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c <\/span><em><span style=\"font-weight: 400;\">GetAll<\/span><\/em><span style=\"font-weight: 400;\"> \uc5d4\ub4dc\ud3ec\uc778\ud2b8 (<\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-crud-nosql-part-2\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 2\ubd80\ub97c \ucc38\uc870\ud558\uc138\uc694. <\/span><span style=\"font-weight: 400;\">GetAll<\/span><\/a><span style=\"font-weight: 400;\">)\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\ub97c \uace0\ub824\ud569\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:default decode:true\">SELECT META(w).id, w.*\r\nFROM demo._default.wishlist w\r\nWHERE w.deleted IS MISSING<\/pre>\n<p><span style=\"font-weight: 400;\">\uc5ec\uae30\uc5d0 SQL++ \uad6c\ubb38\uc744 \uba87 \uac00\uc9c0 \ub354 \uc18c\uac1c\ud588\uc2b5\ub2c8\ub2e4: <\/span><em><span style=\"font-weight: 400;\">\ub204\ub77d<\/span><\/em><span style=\"font-weight: 400;\">. \uc774\uac83\uc740 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\ub294 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uac1c\ub150\uc785\ub2c8\ub2e4. \uad00\uacc4\ud615\uc5d0\uc11c\ub294 \ucffc\ub9ac\uc5d0 \uc9c0\uc815\ub41c \ubaa8\ub4e0 \uc5f4\uc774 \uc815\uc758\ub418\uc5b4\uc57c \ud558\uba70 \uac12\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4(null\uc778 \uacbd\uc6b0\uc5d0\ub3c4). JSON NoSQL \ubb38\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \uc81c\uc57d\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2><b>\uc0c9\uc778 \uac1c\uc120<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">\ub9c8\uc9c0\ub9c9\uc73c\ub85c \ub17c\uc758\ud574\uc57c \ud560 \uc0ac\ud56d\uc740 \uc778\ub371\uc2f1\uc785\ub2c8\ub2e4. \ub2e4\uc2dc <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-crud-nosql-part-2\/\"><span style=\"font-weight: 400;\">\ud30c\ud2b8 2<\/span><\/a><span style=\"font-weight: 400;\">\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2dc\uc791\ud558\uae30 \uc704\ud574 \uae30\ubcf8 \uc778\ub371\uc2a4\ub97c \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774 \uc778\ub371\uc2a4\uac00 \uac00\uc7a5 \ud6a8\uc728\uc801\uc774\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4. <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/services-and-indexes\/indexes\/global-secondary-indexes.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc778\ub371\uc2a4 \uc0dd\uc131 \ubc0f \uc870\uc815<\/span><\/a><span style=\"font-weight: 400;\"> \ub294 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc138\uacc4\uc5d0\uc11c\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uc2ec\ub3c4 \uc788\ub294 \uc8fc\uc81c\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub2e4\ud589\ud788\ub3c4 Couchbase Capella\uc5d0\ub294 \ub0b4\uc7a5\ub41c <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/query-service\/query-workbench.html#index-advisor\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\"><strong>\uc870\uc5b8<\/strong> \ub3c4\uad6c<\/span><\/a><span style=\"font-weight: 400;\"> \ub97c \ud074\ub9ad\ud558\uba74 \ub354 \ub098\uc740 \uc778\ub371\uc2a4\ub97c \ucd94\ucc9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud074\ub9ad\ud558\uae30\ub9cc \ud558\uba74 <strong>\uc870\uc5b8<\/strong>\u00a0\uc744 \uc0ac\uc6a9\ud558\uac70\ub098, \ucffc\ub9ac \uc6cc\ud06c\ubca4\uce58\uc5d0\uc11c <\/span><em><span style=\"font-weight: 400;\">\uc870\uc5b8<\/span><\/em><span style=\"font-weight: 400;\"> \uad6c\ubb38).<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13621\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/08\/query_advise_couchbase_sql-asp-net.png\" alt=\"Index adviser recommendations in Couchbase\" width=\"958\" height=\"637\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/query_advise_couchbase_sql-asp-net.png 958w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/query_advise_couchbase_sql-asp-net-300x199.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/query_advise_couchbase_sql-asp-net-768x511.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/query_advise_couchbase_sql-asp-net-400x267.png 400w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/query_advise_couchbase_sql-asp-net-450x300.png 450w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/query_advise_couchbase_sql-asp-net-20x13.png 20w\" sizes=\"auto, (max-width: 958px) 100vw, 958px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">\uc774 \uacbd\uc6b0 \ub2e4\uc74c\uacfc \uac19\uc740 \uad8c\uc7a5 \uc0ac\ud56d\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">\"recommended_indexes\": {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"indexes\": [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"index_statement\": \"CREATE INDEX adv_deletedISMISSING ON `default`:`demo`.`_default`.`wishlist`(`deleted` IS MISSING) WHERE `deleted` IS MISSING\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"index_statement_relative\": \"CREATE INDEX adv_deletedISMISSING ON `wishlist`(`deleted` IS MISSING) WHERE `deleted` IS MISSING\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"keyspace_alias\": \"wishlist_w\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"query_context\": \"default:demo._default\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"recommending_rule\": \"Index keys follow order of predicate types: 2. equality\/null\/missing.\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 }<\/pre>\n<p><span style=\"font-weight: 400;\">\uc704\uc2dc\ub9ac\uc2a4\ud2b8 \ub370\uc774\ud130\uc758 \uc591\uc774 \ub9e4\uc6b0 \uc801\uc740 \uacbd\uc6b0\uc5d0\ub294 \uc774 \uc778\ub371\uc2a4\ub97c \ub9cc\ub4e4 \uac00\uce58\uac00 \uc5c6\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc608\ub97c \ub4e4\uc5b4 \uc804\uccb4 \uc804\uc790\uc0c1\uac70\ub798 \uc0ac\uc774\ud2b8\uc758 \uc704\uc2dc\ub9ac\uc2a4\ud2b8\ub97c \uad00\ub9ac\ud558\ub294 \uacbd\uc6b0\ub77c\uba74 \uc774 \uc778\ub371\uc2a4\uac00 \uc88b\uc740 \ucd9c\ubc1c\uc810\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2><b>CRUD\uc758 \uc885\ub9d0<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Couchbase\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub9e4\uc6b0 \uac04\ub2e8\ud55c ASP.NET Core CRUD \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \uc791\uc5c5\uc774 \ub05d\ub0ac\uc2b5\ub2c8\ub2e4. \ucd5c\uc885 API \ud45c\uba74\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13619\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/08\/coucbase-asp-net-full-api-sample.png\" alt=\"Full API example of Couchbase ASP.NET app\" width=\"842\" height=\"603\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/coucbase-asp-net-full-api-sample.png 842w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/coucbase-asp-net-full-api-sample-300x215.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/coucbase-asp-net-full-api-sample-768x550.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/coucbase-asp-net-full-api-sample-20x14.png 20w\" sizes=\"auto, (max-width: 842px) 100vw, 842px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">\ub2e4\uc74c\uc740 \uc774 \uc2dc\ub9ac\uc988\uc758 \uac1c\ub150\uc5d0 \ub300\ud55c \ubd84\uc11d\uc774\uba70, \ub354 \uc790\uc138\ud788 \uc54c\uc544\ubcfc \uc218 \uc788\ub294 \ubb38\uc11c \ub9c1\ud06c\ub3c4 \ud568\uaed8 \uc81c\uacf5\ub429\ub2c8\ub2e4:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/cloud\/get-started\/get-started.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc544\uce74\ud3a0\ub77c \uc124\uc815<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/howtos\/managing-connections.html#connection-di\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">NET \uc885\uc18d\uc131 \uc8fc\uc785 \uc124\uc815<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/howtos\/n1ql-queries-with-sdk.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">SQL++<\/span><\/a><span style=\"font-weight: 400;\"> (\uc5ec\uc804\ud788 \"N1QL\"\uc774\ub77c\uace0\ub3c4 \ud568)<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/query-service\/query-workbench.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\ucffc\ub9ac \uc6cc\ud06c\ubca4\uce58<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/guides\/select.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc120\ud0dd<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/guides\/insert.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc0bd\uc785<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/guides\/update.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc5c5\ub370\uc774\ud2b8<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/guides\/delete.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc0ad\uc81c<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/upsert.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">UPSERT<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/guides\/create-index.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc778\ub371\uc2a4 \uc0dd\uc131<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/query-service\/query-workbench.html#index-advisor\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc778\ub371\uc2a4 \uc5b4\ub4dc\ubc14\uc774\uc800<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/howtos\/kv-operations.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\ud0a4-\uac12(.NET SDK)<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/howtos\/kv-operations.html#crud-operations\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\ud0a4-\uac12 CRUD \uc5f0\uc0b0<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/howtos\/subdocument-operations.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\ud558\uc704 \ubb38\uc11c<\/span><\/a><span style=\"font-weight: 400;\"> \uc791\uc5c5<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/howtos\/distributed-acid-transactions-from-the-sdk.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc0b0 \uac70\ub798<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/github.com\/couchbaselabs\/blog-source-code\/tree\/master\/Groves\/135AspNetCoreGettingStartedUpdated2019\/src\/AspNetCoreTutorial\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc774 \uc2dc\ub9ac\uc988\uc758 \uc804\uccb4 \uc18c\uc2a4 \ucf54\ub4dc\ub294 GitHub\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2><b>\ub2e4\uc74c \ub2e8\uacc4\ub294 \ubb34\uc5c7\uc778\uac00\uc694?<\/b><\/h2>\n<p><a href=\"https:\/\/cloud.couchbase.com\/sign-up\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uc544\uce74\ud3a0\ub77c \ubb34\ub8cc \uccb4\ud5d8 \uc2e0\uccad\ud558\uae30<\/span><\/a><span style=\"font-weight: 400;\">. Couchbase Capella DBaaS\ub294 Couchbase\ub97c \uc2dc\uc791\ud558\ub294 \uac00\uc7a5 \uc26c\uc6b4 \ubc29\ubc95\uc774\uba70 \uc2e0\uc6a9 \uce74\ub4dc\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub2e4\uc74c \ub0b4\uc6a9\uc744 \ud655\uc778\ud558\uc138\uc694. <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">.NET\uc6a9 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud50c\ub808\uc774\uadf8\ub77c\uc6b4\ub4dc<\/span><\/a><span style=\"font-weight: 400;\"> \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \ubc14\ub85c \uc2e4\ud589\ud560 \uc218 \uc788\ub294 \uc608\uc81c\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uac00\uc785\ud558\uae30 <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-on-discord\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub514\uc2a4\ucf54\ub4dc<\/span><\/a><span style=\"font-weight: 400;\"> \ub97c \ud1b5\ud574 CouchBase \uc5d4\uc9c0\ub2c8\uc5b4 \ubc0f \ub2e4\ub978 CouchBase \ucee4\ubba4\ub2c8\ud2f0 \uad6c\uc131\uc6d0\ub4e4\uacfc \uc9c8\ubb38\ud558\uace0 \uc758\uacac\uc744 \uad50\ud658\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>This ASP.NET Core CRUD series is coming to end. We\u2019ve covered setup (part 1), reading with SQL++ (part 2), reading with key-value (part 3), and creating\/updating (part 4). In this last post, we\u2019ll look at the D in CRUD: deleting. [&hellip;]<\/p>","protected":false},"author":71,"featured_media":13623,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10126,10127,1816,2201],"tags":[],"ppma_author":[8937],"class_list":["post-13618","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-asp-dotnet","category-c-sharp","category-couchbase-server","category-tools-sdks"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ASP.NET Core CRUD with NoSQL: Part 5<\/title>\n<meta name=\"description\" content=\"Learn about deleting with SQL++ or Key-Value, soft-deleting data, improving the index, and more. Sign up for a Capella free-trial and try it for yourself.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-crud-nosql-part-5\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ASP.NET Core CRUD with NoSQL: Part 5\" \/>\n<meta property=\"og:description\" content=\"Learn about deleting with SQL++ or Key-Value, soft-deleting data, improving the index, and more. Sign up for a Capella free-trial and try it for yourself.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-crud-nosql-part-5\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-02T16:46:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:56:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"ASP.NET Core CRUD with NoSQL: Part 5\",\"datePublished\":\"2022-08-02T16:46:48+00:00\",\"dateModified\":\"2025-06-14T03:56:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/\"},\"wordCount\":906,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg\",\"articleSection\":[\".NET\",\"ASP.NET\",\"C#\",\"Couchbase Server\",\"Tools &amp; SDKs\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/\",\"name\":\"ASP.NET Core CRUD with NoSQL: Part 5\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg\",\"datePublished\":\"2022-08-02T16:46:48+00:00\",\"dateModified\":\"2025-06-14T03:56:42+00:00\",\"description\":\"Learn about deleting with SQL++ or Key-Value, soft-deleting data, improving the index, and more. Sign up for a Capella free-trial and try it for yourself.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg\",\"width\":2560,\"height\":2560,\"caption\":\"Adding DELETE CRUD to ASP.NET Couchbase app\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ASP.NET Core CRUD with NoSQL: Part 5\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"NoSQL\uc744 \uc0ac\uc6a9\ud55c ASP.NET Core CRUD: 5\ubd80","description":"SQL++ \ub610\ub294 \ud0a4-\uac12\uc744 \uc0ac\uc6a9\ud55c \uc0ad\uc81c, \ub370\uc774\ud130 \uc18c\ud504\ud2b8 \uc0ad\uc81c, \uc778\ub371\uc2a4 \uac1c\uc120 \ub4f1\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc138\uc694. Capella \ubb34\ub8cc \ud3c9\uac00\ud310\uc5d0 \uac00\uc785\ud558\uc5ec \uc9c1\uc811 \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-crud-nosql-part-5\/","og_locale":"ko_KR","og_type":"article","og_title":"ASP.NET Core CRUD with NoSQL: Part 5","og_description":"Learn about deleting with SQL++ or Key-Value, soft-deleting data, improving the index, and more. Sign up for a Capella free-trial and try it for yourself.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/asp-net-crud-nosql-part-5\/","og_site_name":"The Couchbase Blog","article_published_time":"2022-08-02T16:46:48+00:00","article_modified_time":"2025-06-14T03:56:42+00:00","og_image":[{"width":2560,"height":2560,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg","type":"image\/jpeg"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"ASP.NET Core CRUD with NoSQL: Part 5","datePublished":"2022-08-02T16:46:48+00:00","dateModified":"2025-06-14T03:56:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/"},"wordCount":906,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg","articleSection":[".NET","ASP.NET","C#","Couchbase Server","Tools &amp; SDKs"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/","url":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/","name":"NoSQL\uc744 \uc0ac\uc6a9\ud55c ASP.NET Core CRUD: 5\ubd80","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg","datePublished":"2022-08-02T16:46:48+00:00","dateModified":"2025-06-14T03:56:42+00:00","description":"SQL++ \ub610\ub294 \ud0a4-\uac12\uc744 \uc0ac\uc6a9\ud55c \uc0ad\uc81c, \ub370\uc774\ud130 \uc18c\ud504\ud2b8 \uc0ad\uc81c, \uc778\ub371\uc2a4 \uac1c\uc120 \ub4f1\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc138\uc694. Capella \ubb34\ub8cc \ud3c9\uac00\ud310\uc5d0 \uac00\uc785\ud558\uc5ec \uc9c1\uc811 \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/08\/couchbase-asp-net-crud-app-scaled.jpg","width":2560,"height":2560,"caption":"Adding DELETE CRUD to ASP.NET Couchbase app"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/asp-net-crud-nosql-part-5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ASP.NET Core CRUD with NoSQL: Part 5"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"\ub9e4\ud29c \uadf8\ub85c\ube0c\uc2a4","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves\ub294 \ucf54\ub529\uc744 \uc88b\uc544\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. C#, jQuery, PHP \ub4f1 \ubb34\uc5c7\uc774\ub4e0 \ud480 \ub9ac\ud018\uc2a4\ud2b8\ub97c \uc81c\ucd9c\ud560 \uc815\ub3c4\ub85c \ucf54\ub529\uc744 \uc88b\uc544\ud569\ub2c8\ub2e4. 90\ub144\ub300\uc5d0 \ubd80\ubaa8\ub2d8\uc758 \ud53c\uc790 \uac00\uac8c\ub97c \uc704\ud574 QuickBASIC POS \uc571\uc744 \ub9cc\ub4e0 \uc774\ud6c4\ub85c \uc804\ubb38\uc801\uc73c\ub85c \ucf54\ub529\uc744 \ud574\uc654\uc2b5\ub2c8\ub2e4. \ud604\uc7ac Couchbase\uc758 \uc120\uc784 \uc81c\ud488 \ub9c8\ucf00\ud305 \uad00\ub9ac\uc790\ub85c \uc77c\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uac00 \uc2dc\uac04\uc5d0\ub294 \uac00\uc871\uacfc \ud568\uaed8 \ucd95\uad6c \uacbd\uae30\ub97c \uad00\ub78c\ud558\uace0 \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0\uc5d0 \ucc38\uc5ec\ud558\uba70 \uc2dc\uac04\uc744 \ubcf4\ub0c5\ub2c8\ub2e4. \uadf8\ub294 .NET\uc758 AOP, .NET\uc758 \ud504\ub85c \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4, Pluralsight \uc800\uc790, Microsoft MVP\uc758 \uc800\uc790\uc774\uae30\ub3c4 \ud569\ub2c8\ub2e4.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves\ub294 \ucf54\ub529\uc744 \uc88b\uc544\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4.  C#, jQuery, PHP \ub4f1 \ubb34\uc5c7\uc774\ub4e0 \ud480 \ub9ac\ud018\uc2a4\ud2b8\ub97c \uc81c\ucd9c\ud560 \uc815\ub3c4\ub85c \ucf54\ub529\uc744 \uc88b\uc544\ud569\ub2c8\ub2e4.  90\ub144\ub300\uc5d0 \ubd80\ubaa8\ub2d8\uc758 \ud53c\uc790 \uac00\uac8c\ub97c \uc704\ud574 QuickBASIC POS \uc571\uc744 \ub9cc\ub4e0 \uc774\ud6c4\ub85c \uc804\ubb38\uc801\uc73c\ub85c \ucf54\ub529\uc744 \ud574\uc654\uc2b5\ub2c8\ub2e4.  \ud604\uc7ac Couchbase\uc758 \uc120\uc784 \uc81c\ud488 \ub9c8\ucf00\ud305 \uad00\ub9ac\uc790\ub85c \uc77c\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uac00 \uc2dc\uac04\uc5d0\ub294 \uac00\uc871\uacfc \ud568\uaed8 \ucd95\uad6c \uacbd\uae30\ub97c \uad00\ub78c\ud558\uace0 \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0\uc5d0 \ucc38\uc5ec\ud558\uba70 \uc2dc\uac04\uc744 \ubcf4\ub0c5\ub2c8\ub2e4.  \uadf8\ub294 .NET\uc758 AOP, .NET\uc758 \ud504\ub85c \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4, Pluralsight \uc800\uc790, Microsoft MVP\uc758 \uc800\uc790\uc774\uae30\ub3c4 \ud569\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/13618","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=13618"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/13618\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13623"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=13618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=13618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=13618"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=13618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}