{"id":17073,"date":"2025-04-24T11:51:03","date_gmt":"2025-04-24T18:51:03","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=17073"},"modified":"2025-04-24T11:51:03","modified_gmt":"2025-04-24T18:51:03","slug":"ef-core-provider-for-couchbase-general-availability","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/ef-core-provider-for-couchbase-general-availability\/","title":{"rendered":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \uacf5\uae09\uc790\uc758 \uc815\uc2dd \ucd9c\uc2dc \ubc1c\ud45c"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">\uadf8\ub9ac\uace0 <\/span><a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-efcore-provider\"><b>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \uacf5\uae09\uc790<\/b><span style=\"font-weight: 400;\"> \ub294 \uc774\uc81c <\/span><b>\uc77c\ubc18\uc801\uc73c\ub85c \uc0ac\uc6a9 \uac00\ub2a5<\/b><\/a><span style=\"font-weight: 400;\">. \uc774 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c\ub294 \uc5d4\ud2f0\ud2f0 \ud504\ub808\uc784\uc6cc\ud06c \ucf54\uc5b4\uc758 \uac15\ub825\ud55c \uae30\ub2a5\uc744 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc5d0 \uc801\uc6a9\ud558\uc5ec .NET \uac1c\ubc1c\uc790\uac00 \uc775\uc219\ud55c EF \ucf54\uc5b4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud558\uc5ec \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\ub85c \uc791\uc5c5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \uc81c\uacf5\uc5c5\uccb4\ub780 \ubb34\uc5c7\uc778\uac00\uc694?<\/h2>\n<p><span style=\"font-weight: 400;\">\uc5d4\ud2f0\ud2f0 \ud504\ub808\uc784\uc6cc\ud06c \ucf54\uc5b4(EF \ucf54\uc5b4)\ub294 .NET \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc561\uc138\uc2a4\ub97c \uac04\uc18c\ud654\ud558\ub294 \uc778\uae30 \uc788\ub294 O\/RM\uc785\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uac1c\ubc1c\uc790\ub294 \uc6d0\uc2dc \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucffc\ub9ac\ub97c \uc791\uc131\ud558\ub294 \ub300\uc2e0 C# \uac1c\uccb4\uc640 LINQ \ucffc\ub9ac\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130 \uc791\uc5c5\uc744 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. EF Core\ub294 \ub2e4\uc591\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640\uc758 \ud1b5\ud569\uc744 \uc9c0\uc6d0\ud558\uc5ec \uc790\ub3d9 \ubcc0\uacbd \ucd94\uc801, \ud2b8\ub79c\uc7ad\uc158, \uce5c\uc219\ud55c DbContext API\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uac1c\ubc1c\uc790\uac00 \uc2dc\uac04\uc744 \uc808\uc57d\ud558\uace0 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c \ubc0f \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad00\ub828 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \ud1b5\ud569\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uce5c\uc219\ud55c \uc778\ud130\ud398\uc774\uc2a4\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uadf8\ub9ac\uace0 <\/span><b>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \uacf5\uae09\uc790<\/b><span style=\"font-weight: 400;\"> \uac1c\ubc1c\uc790\ub294 \uc5d4\ud2f0\ud2f0 \ud504\ub808\uc784\uc6cc\ud06c \ucf54\uc5b4\ub97c \ub2e4\uc74c\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/span><b>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84<\/b><span style=\"font-weight: 400;\"> \uadf8\ub9ac\uace0 <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><b>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uce74\ud3a0<\/b><b>a<\/b><\/a><span style=\"font-weight: 400;\"> (\ud604\uc7ac \uc601\uad6c \ubb34\ub8cc \ud2f0\uc5b4\uc5d0\uc11c \uc0ac\uc6a9 \uac00\ub2a5). \uc774 \uacf5\uae09\uc790\ub97c \uc0ac\uc6a9\ud558\uba74 Linq \ucffc\ub9ac, DbContext \ubc0f \ubcc0\uacbd \ucd94\uc801\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub9c8\uce58 \uad00\uacc4\ud615 \uc5d4\ud130\ud2f0\uc778 \uac83\ucc98\ub7fc Couchbase \ubb38\uc11c\ub85c \uc791\uc5c5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2>\uc2dc\uc791\ud558\uae30<\/h2>\n<p><span style=\"font-weight: 400;\">Couchbase EF \ucf54\uc5b4 \ud504\ub85c\ubc14\uc774\ub354\ub97c \uc124\uce58\ud558\ub824\uba74 \ub2e4\uc74c\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. <\/span><a href=\"https:\/\/www.nuget.org\/packages\/Couchbase.EntityFrameworkCore\"><span style=\"font-weight: 400;\">NuGet \ud328\ud0a4\uc9c0<\/span><\/a><span style=\"font-weight: 400;\">:<\/span><\/p>\n<pre class=\"nums:false lang:ps decode:true\"># .NET CLI\r\n\ub2f7\ub137 \ud328\ud0a4\uc9c0 \ucd94\uac00 Couchbase.EntityFrameworkCore\r\n\r\n# \ub610\ub294 \ud328\ud0a4\uc9c0 \uad00\ub9ac\uc790 \uc0ac\uc6a9\r\n\uc124\uce58-\ud328\ud0a4\uc9c0 Couchbase.EntityFrameworkCore<\/pre>\n<h3>\uc608: Couchbase\uc640 \ud568\uaed8 EF Core \uc0ac\uc6a9<\/h3>\n<p><span style=\"font-weight: 400;\">\ub2e4\uc74c\uc740 \uac04\ub2e8\ud55c '\uc7a5\ubc14\uad6c\ub2c8'\ub97c \uc124\uc815\ud558\uace0 \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc608\uc2dc\uc785\ub2c8\ub2e4. <\/span><b>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \uacf5\uae09\uc790<\/b><span style=\"font-weight: 400;\"> \uc1fc\ud551 \uce74\ud2b8 \ubaa8\ub378\uacfc \ud568\uaed8.<\/span><\/p>\n<h4>\uc5d4\ud2f0\ud2f0 \ubaa8\ub378 \uc815\uc758<\/h4>\n<pre class=\"nums:false wrap:true lang:c# decode:true\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4;\r\nusing Couchbase.EntityFrameworkCore;\r\nusing Couchbase.EntityFrameworkCore.Extensions;\r\nusing Microsoft.EntityFrameworkCore;\r\nusing Microsoft.Extensions.Logging;\r\nNLog.Extensions.Logging \uc0ac\uc6a9;\r\nusing ILoggerFactory = Microsoft.Extensions.Logging.ILoggerFactory;\r\n\r\npublic class Cart\r\n{\r\n    public string CartId { get; set; }\r\n    public DateTimeOffset Created { get; set; }\r\n    public List Items { get; set; }\r\n}\r\n\r\npublic class Item\r\n{\r\n    public string ItemId { get; set; }\r\n    public string Name { get; set; }\r\n    public uint Quantity { get; set; }\r\n    public decimal Price { get; set; }\r\n}<\/pre>\n<h4>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc6a9 DbContext \ub9cc\ub4e4\uae30<\/h4>\n<pre class=\"nums:false wrap:true lang:c# decode:true\">public \ud074\ub798\uc2a4 CartContext : DbContext\r\n{\r\n    public DbSet Carts { get; set; }\r\n    public DbSet Items { get; set; }\r\n    private static \uc77d\uae30 \uc804\uc6a9 ILoggerFactory LoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =&gt; =&gt;)\r\n    {\r\n        builder.ClearProviders();\r\n        builder.AddNLog();\r\n    });\r\n    \ubcf4\ud638\ub41c \uc624\ubc84\ub77c\uc774\ub4dc void OnConfiguring(DbContextOptionsBuilder options)\r\n    {\r\n        options.UseCouchbase(new ClusterOptions()\r\n                .WithCredentials(\"\uad00\ub9ac\uc790\", \"\ube44\ubc00\ubc88\ud638\")\r\n                .WithConnectionString(\"couchbase:\/\/localhost\")\r\n                .WithLogging(LoggerFactory),\r\n            couchbaseDbContextOptions =&gt;.\r\n            {\r\n                couchbaseDbContextOptions.Bucket = \"Shopping\";\r\n                couchbaseDbContextOptions.Scope = \"\uc804\uc790\uc0c1\uac70\ub798\";\r\n            });\r\n    }\r\n\r\n    \ubcf4\ud638\ub41c \uc624\ubc84\ub77c\uc774\ub4dc void OnModelCreating(\ubaa8\ub378 \ube4c\ub354 \ubaa8\ub378 \ube4c\ub354)\r\n    {\r\n        modelBuilder.Entity().ToCouchbaseCollection(this, \"Carts\");\r\n        modelBuilder.Entity().ToCouchbaseCollection(this, \"Items\");\r\n    }\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">\uc774 \ubc30\uc5f4\uc740 Couchbase\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc740 \ubc84\ud0b7\uc744 \uc0dd\uc131\ud588\ub2e4\uace0 \uac00\uc815\ud569\ub2c8\ub2e4. <em>\uc1fc\ud551<\/em>\ub77c\ub294 \ubc94\uc704\uac00 \ud3ec\ud568\ub41c <em>\uc804\uc790 \uc0c1\uac70\ub798<\/em>\uceec\ub809\uc158\uc774 \ud3ec\ud568\ub41c <em>\ud56d\ubaa9<\/em> \uadf8\ub9ac\uace0 <em>\uce74\ud2b8<\/em>.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub610\ud55c \ub85c\uae45\uc740 \uc120\ud0dd \uc0ac\ud56d\uc774\uc9c0\ub9cc \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294 \ubb38\uc81c\ub97c \ud30c\uc545\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub3c4\ub85d \ub85c\uae45\uc744 \ucf1c\ub450\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h4>\ub370\uc774\ud130 \uc0bd\uc785 \ubc0f \ucffc\ub9ac<\/h4>\n<pre class=\"nums:false wrap:true lang:c# decode:true\">var db = new CartContext()\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub300\uae30\ud569\ub2c8\ub2e4;\r\nvar cart = new Cart\r\n{\r\n    CartId = Guid.NewGuid().ToString(),\r\n    Created = DateTimeOffset.Now,\r\n    Items = \uc0c8\ub85c\uc6b4 List\r\n    {\r\n        new Item { ItemId = Guid.NewGuid().ToString(), Name = \"Widget\", Price = 0.99M, Quantity = 1},\r\n        new Item { ItemId = Guid.NewGuid().ToString(), Name = \"Foo\", Price = 4.99M, Quantity = 3},\r\n        new Item { ItemId = Guid.NewGuid().ToString(), Name = \"Baz\", Price = 99.19M, Quantity = 1}, }\r\n    }\r\n};\r\nawait db.AddAsync(cart);\r\nawait db.SaveChangesAsync();\r\n\r\nvar items = await db.Items.Where(i =&gt; i.Name == \"Foo\").ToListAsync();\r\nforeach (var i in items)\r\n{\r\n    Console.WriteLine(JsonConvert.SerializeObject(i));\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">\ub2e4\uc74c\uc740 Couchbase\uc758 \ubb38\uc11c\uac00 \uc0bd\uc785\ub41c \ud6c4 \uc5b4\ub5a4 \ubaa8\uc2b5\uc77c\uc9c0 \ubcf4\uc5ec\uc8fc\ub294 \uc608\uc2dc\uc785\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"nums:false lang:js decode:true\">Key: 080c210a-34eb-45ea-b9b4-e5c6f8afa4d6\r\n{\r\n  \"CartId\": \"080c210a-34eb-45ea-b9b4-e5c6f8afa4d6\",\r\n  \"\uc0dd\uc131\ub428\": \"2025-03-13T17:16:31.9904224-04:00\"\r\n}\r\nKey acf54397-51c4-4ad7-bf34-d0a42061b662\r\n{\r\n  \"ItemId\": \"acf54397-51c4-4ad7-bf34-d0a42061b662\",\r\n  \"CartId\": \"080c210a-34eb-45ea-b9b4-e5c6f8afa4d6\",\r\n  \"Name\": \"Foo\",\r\n  \"\uac00\uaca9\": 4.99,\r\n  \"\uc218\ub7c9\": 3\r\n}\r\nKey a3f25210-97f2-4c95-ad4b-f241dde0d9c3\r\n{\r\n  \"ItemId\": \"a3f25210-97f2-4c95-ad4b-f241dde0d9c3\",\r\n  \"CartId\": \"080c210a-34eb-45ea-b9b4-e5c6f8afa4d6\",\r\n  \"Name\": \"\uc704\uc82f\",\r\n  \"Price\": 0.99,\r\n  \"\uc218\ub7c9\": 1\r\n}\r\n\/\/ ... \ub4f1 ...<\/pre>\n<h2>GA \ub9b4\ub9ac\uc2a4\uc5d0\uc11c\ub294 \uc5b4\ub5a4 \uae30\ub2a5\uc774 \uc791\ub3d9\ud558\ub098\uc694?<\/h2>\n<p><span style=\"font-weight: 400;\">EF Core\uc758 \uc804\uccb4 \uae30\ub2a5\uc740 \ub9e4\uc6b0 \ubc29\ub300\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uac00\ub2a5\ud55c \ubaa8\ub4e0 Linq \ubb38\uc744 \ucc98\ub9ac\ud558\ub294 \uac83\uc740 SQL Server\uc640 \uac19\uc740 \uc131\uc219\ud55c EF Core \uc81c\uacf5\uc5c5\uccb4\uc5d0\uc11c\ub3c4 \uac70\uc758 \ubd88\uac00\ub2a5\uc5d0 \uac00\uae5d\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774\ubc88 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub9ce\uc740 \ud575\uc2ec EF Core \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4:<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">\u2705 <\/span><b>LINQ \uc9c0\uc6d0<\/b><span style=\"font-weight: 400;\"> - LINQ \ucffc\ub9ac\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ubcc0\ud658\ud569\ub2c8\ub2e4. <\/span><b>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 SQL++<\/b><span style=\"font-weight: 400;\">.<br \/>\n<\/span><span style=\"font-weight: 400;\">\u2705 <\/span><b>\uae30\ubcf8 CRUD \uc791\uc5c5<\/b><span style=\"font-weight: 400;\"> - \uc608\uc0c1\ub300\ub85c \uc791\uc5c5\uc744 \uc0bd\uc785, \uc5c5\ub370\uc774\ud2b8 \ubc0f \uc0ad\uc81c\ud569\ub2c8\ub2e4.<br \/>\n<\/span><span style=\"font-weight: 400;\">\u2705 <\/span><b>\ubcc0\uacbd \ucd94\uc801<\/b><span style=\"font-weight: 400;\"> - \ud6a8\uc728\uc801\uc778 \uc5c5\ub370\uc774\ud2b8\ub97c \uc704\ud574 \uc5d4\ud2f0\ud2f0\ub97c \ucd94\uc801\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub610\ud55c \ube44\ub3d9\uae30 \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74 <\/span><b>\ud544\uc218<\/b><span style=\"font-weight: 400;\">. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 .NET SDK\ub294 \uc644\uc804\ud788 \ube44\ub3d9\uae30\uc2dd\uc785\ub2c8\ub2e4. \ube44\ub3d9\uae30 \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\ub824\uace0 \ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ub7f0\ud0c0\uc784 \uc624\ub958\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4. <code>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uacf5\uae09\uc790\ub294 \ub3d9\uae30\uc2dd I\/O\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/code>.<\/span><\/p>\n<h2>\uc54c\ub824\uc9c4 \uc81c\ud55c \uc0ac\ud56d<\/h2>\n<p><span style=\"font-weight: 400;\">\uc774\ub294 \uc911\uc694\ud55c \uc774\uc815\ud45c\uc785\ub2c8\ub2e4, <\/span><b>\uc77c\ubd80 \uae30\ub2a5\uc740 \uc544\uc9c1 \uac1c\ubc1c \uc911\uc785\ub2c8\ub2e4.<\/b><span style=\"font-weight: 400;\">\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4:<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">\u274c <\/span><b>\ube44\uc815\uaddc\ud654<\/b><span style=\"font-weight: 400;\"> - \ubb38\uc11c \ub0b4\ubd80\uc5d0 \uceec\ub809\uc158 \uc911\ucca9(\uc608 <\/span><span style=\"font-weight: 400;\">\ud56d\ubaa9<\/span><span style=\"font-weight: 400;\"> \ub0b4\ubd80 <\/span><span style=\"font-weight: 400;\">\uc7a5\ubc14\uad6c\ub2c8 <\/span><span style=\"font-weight: 400;\">\ub2e8\uc77c JSON \ubb38\uc11c\ub85c)\ub294 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<br \/>\n<\/span><span style=\"font-weight: 400;\">\u274c <\/span><b>\uc5f4\uc2ec\ud788 \ub85c\ub4dc \uc911<\/b><span style=\"font-weight: 400;\"> - <\/span><span style=\"font-weight: 400;\"><code>.\ud3ec\ud568()<\/code><\/span><span style=\"font-weight: 400;\"> \ubb38\uc774 \uc608\uc0c1\ub300\ub85c \uc791\ub3d9\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n<\/span><span style=\"font-weight: 400;\">\u274c <\/span><b>SQL++ \ud568\uc218 \uc9c0\uc6d0<\/b><span style=\"font-weight: 400;\"> - \ub2e4\uc74c\uacfc \uac19\uc740 \uc77c\ubd80 SQL++ \ud568\uc218 <\/span><span style=\"font-weight: 400;\">\uba54\ud0c0<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">RYOW<\/span><span style=\"font-weight: 400;\">\ub4f1\uc774 \uc644\uc804\ud788 \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.<br \/>\n<\/span><span style=\"font-weight: 400;\">\u274c <\/span><b>\uac70\ub798 <\/b><span style=\"font-weight: 400;\">- \uc774\ubc88 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c\ub294 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2>\ub300\ud654\uc5d0 \ucc38\uc5ec\ud558\uc138\uc694!<\/h2>\n<p><span style=\"font-weight: 400;\">\uc5ec\ub7ec\ubd84\uc758 \ud53c\ub4dc\ubc31\uc744 \uae30\ub2e4\ub9bd\ub2c8\ub2e4! \ubbf8\ub798\ub97c \ub9cc\ub4e4\uc5b4\uac00\ub294 \ub370 \ub3c4\uc6c0\uc744 \uc8fc\uc138\uc694. <\/span><b>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \uacf5\uae09\uc790<\/b><span style=\"font-weight: 400;\">:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\uc9c8\ubb38\ud558\uace0 \uacbd\ud5d8 \uacf5\uc720<\/b><span style=\"font-weight: 400;\"> \uc5d0\uc11c<\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/forums\/c\/net-sdk\/6\/\"><span style=\"font-weight: 400;\"> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 .NET \ud3ec\ub7fc<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Discord\uc5d0\uc11c \ucc44\ud305\ud558\uae30<\/b><span style=\"font-weight: 400;\"> -<\/span><a href=\"https:\/\/discord.com\/invite\/K7NPMPGrPk\"><span style=\"font-weight: 400;\"> \ucee4\ubba4\ub2c8\ud2f0 \uac00\uc785\ud558\uae30<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\uc774\uc288 \ubcf4\uace0 \ubc0f \uae30\uc5ec<\/b><span style=\"font-weight: 400;\"> on<\/span><a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-efcore-provider\"><span style=\"font-weight: 400;\"> GitHub<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>\ub2e4\uc74c \ub2e8\uacc4\ub294 \ubb34\uc5c7\uc778\uac00\uc694?<\/h2>\n<p><span style=\"font-weight: 400;\">\uc774\ubc88 \ub9b4\ub9ac\uc2a4\ub294 \uc2dc\uc791\uc5d0 \ubd88\uacfc\ud569\ub2c8\ub2e4! \uc800\ud76c\ub294 \uc774 EF \ucf54\uc5b4 \uad6c\ud604\uc744 \uad6c\ucd95\ud558\uae30 \uc704\ud574 \uc801\uadf9\uc801\uc73c\ub85c \ub178\ub825\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. <\/span><b>\ud53c\ub4dc\ubc31 <\/b><span style=\"font-weight: 400;\">\ub294 \uae30\ub2a5\uc758 \uc6b0\uc120\uc21c\uc704\ub97c \uc815\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc9c0\uae08 \ubc14\ub85c \uc0ac\uc6a9\ud574 \ubcf4\uc2dc\uace0 \uc758\uacac\uc744 \uc54c\ub824\uc8fc\uc138\uc694. \ud589\ubcf5\ud55c \ucf54\ub529\uc774 \ub418\uc2dc\uae38 \ubc14\ub78d\ub2c8\ub2e4!<\/span><\/p>\n<p><br style=\"font-weight: 400;\" \/><br style=\"font-weight: 400;\" \/><\/p>","protected":false},"excerpt":{"rendered":"<p>The Couchbase EF Core Provider is now generally available. This release brings the power of Entity Framework Core to Couchbase, allowing .NET developers to work with Couchbase using familiar EF Core patterns. What is the Couchbase EF Core provider? Entity [&hellip;]<\/p>","protected":false},"author":71,"featured_media":17074,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,1815,2225,1816,2201],"tags":[10108,1806],"ppma_author":[8937],"class_list":["post-17073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-best-practices-and-tutorials","category-cloud","category-couchbase-server","category-tools-sdks","tag-ef-core","tag-entity-framework"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Announcing the General Availability of the Couchbase EF Core Provider<\/title>\n<meta name=\"description\" content=\"The Couchbase EF Core Provider is now generally available, bringing seamless integration between Couchbase and Entity Framework Core.\" \/>\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\/ef-core-provider-for-couchbase-general-availability\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing the General Availability of the Couchbase EF Core Provider\" \/>\n<meta property=\"og:description\" content=\"The Couchbase EF Core Provider is now generally available, bringing seamless integration between Couchbase and Entity Framework Core.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/ef-core-provider-for-couchbase-general-availability\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-24T18:51:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Announcing the General Availability of the Couchbase EF Core Provider\",\"datePublished\":\"2025-04-24T18:51:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/\"},\"wordCount\":545,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png\",\"keywords\":[\"EF Core\",\"Entity Framework\"],\"articleSection\":[\".NET\",\"Best Practices and Tutorials\",\"Couchbase Capella\",\"Couchbase Server\",\"Tools &amp; SDKs\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/\",\"name\":\"Announcing the General Availability of the Couchbase EF Core Provider\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png\",\"datePublished\":\"2025-04-24T18:51:03+00:00\",\"description\":\"The Couchbase EF Core Provider is now generally available, bringing seamless integration between Couchbase and Entity Framework Core.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Announcing the General Availability of the Couchbase EF Core Provider\"}]},{\"@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":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \uacf5\uae09\uc790\uc758 \uc815\uc2dd \ucd9c\uc2dc \ubc1c\ud45c","description":"\uc774\uc81c Couchbase EF \ucf54\uc5b4 \ud504\ub85c\ubc14\uc774\ub354\uac00 \uc815\uc2dd \ucd9c\uc2dc\ub418\uc5b4 Couchbase\uc640 Entity Framework Core\ub97c \uc6d0\ud65c\ud558\uac8c \ud1b5\ud569\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","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\/ef-core-provider-for-couchbase-general-availability\/","og_locale":"ko_KR","og_type":"article","og_title":"Announcing the General Availability of the Couchbase EF Core Provider","og_description":"The Couchbase EF Core Provider is now generally available, bringing seamless integration between Couchbase and Entity Framework Core.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/ef-core-provider-for-couchbase-general-availability\/","og_site_name":"The Couchbase Blog","article_published_time":"2025-04-24T18:51:03+00:00","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png","type":"image\/png"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Announcing the General Availability of the Couchbase EF Core Provider","datePublished":"2025-04-24T18:51:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/"},"wordCount":545,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png","keywords":["EF Core","Entity Framework"],"articleSection":[".NET","Best Practices and Tutorials","Couchbase Capella","Couchbase Server","Tools &amp; SDKs"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/","url":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 EF \ucf54\uc5b4 \uacf5\uae09\uc790\uc758 \uc815\uc2dd \ucd9c\uc2dc \ubc1c\ud45c","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png","datePublished":"2025-04-24T18:51:03+00:00","description":"\uc774\uc81c Couchbase EF \ucf54\uc5b4 \ud504\ub85c\ubc14\uc774\ub354\uac00 \uc815\uc2dd \ucd9c\uc2dc\ub418\uc5b4 Couchbase\uc640 Entity Framework Core\ub97c \uc6d0\ud65c\ud558\uac8c \ud1b5\ud569\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ef-core-couchbase.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/ef-core-provider-for-couchbase-general-availability\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Announcing the General Availability of the Couchbase EF Core Provider"}]},{"@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\/17073","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=17073"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/17073\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/17074"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=17073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=17073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=17073"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=17073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}