{"id":2267,"date":"2016-05-18T14:32:38","date_gmt":"2016-05-18T14:32:38","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2267"},"modified":"2025-10-09T07:07:56","modified_gmt":"2025-10-09T14:07:56","slug":"couchbase-with-windows-net-part-4-linq2couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-with-windows-net-part-4-linq2couchbase\/","title":{"rendered":"Windows \ubc0f .NET\uc744 \uc0ac\uc6a9\ud558\ub294 Couchbase - 4\ubd80 - Linq2Couchbase"},"content":{"rendered":"<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-with-windows-and-.net---part-1\/\">1\ubd80\uc5d0\uc11c\ub294 Windows\uc5d0\uc11c Couchbase\ub97c \uc124\uce58\ud558\uace0 \uc124\uc815\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4.<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-with-windows-and-.net---part-2\/\">2\ubd80\uc5d0\uc11c\ub294 \uc54c\uc544\uc57c \ud560 \uba87 \uac00\uc9c0 Couchbase \uc6a9\uc5b4\ub97c \ub2e4\ub8f9\ub2c8\ub2e4.<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-with-windows-and-.net---part-3---asp.net-mvc\/\">3\ubd80\uc5d0\uc11c\ub294 ASP.NET\uc5d0\uc11c Couchbase\ub97c \uc0ac\uc6a9\ud558\ub294 \uac00\uc7a5 \uac04\ub2e8\ud55c \uc608\uc81c\ub97c \ubcf4\uc5ec\uc8fc\uc5c8\uc2b5\ub2c8\ub2e4.<\/a><\/li>\n<\/ul>\n<p>\uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 3\ubd80\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub0b4\uc6a9\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/couchbaselabs\/Linq2Couchbase\">Linq2Couchbase<\/a>. \ub610\ud55c Couchbase\ub97c \ucee8\ud2b8\ub864\ub7ec\uc5d0\uc11c \uaebc\ub0b4\uc11c \ub9e4\uc6b0 \uae30\ubcf8\uc801\uc778 <a href=\"https:\/\/www.martinfowler.com\/eaaCatalog\/repository.html\">\uc800\uc7a5\uc18c<\/a> \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4. \uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc758 \ubaa9\ud45c\ub294 Couchbase\uc640 Linq2Couchbase\uc758 \uae30\ubcf8 \uc0ac\ud56d\uc5d0 \uc775\uc219\ud574\uc838\uc11c \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc801\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<h2>\ucee8\ud2b8\ub864\ub7ec\uc5d0\uc11c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ub3d9\ud558\uae30<\/h2>\n<p>\ucee8\ud2b8\ub864\ub7ec\uc758 \uc5ed\ud560\uc740 \ub4e4\uc5b4\uc624\ub294 \uc694\uccad\uc744 \ubc1b\uc544 \ubaa8\ub378\uc5d0 \uc804\ub2ec\ud55c \ub2e4\uc74c \uacb0\uacfc\ub97c \ubdf0\uc5d0 \uc81c\uacf5\ud558\ub294 \ub4f1 \ud2b8\ub798\ud53d\uc744 \uc9c0\uc2dc\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 <a href=\"https:\/\/www.butunclebob.com\/ArticleS.UncleBob.PrinciplesOfOod\">\uacac\uace0\ud55c \uc6d0\uce59<\/a> (\ud2b9\ud788 \ub2e8\uc77c \ucc45\uc784 \uc6d0\uce59)\uc5d0 \ub530\ub77c \ub370\uc774\ud130 \uc561\uc138\uc2a4\ub294 \ucee8\ud2b8\ub864\ub7ec\uac00 \uc544\ub2cc '\ubaa8\ub378'\uc758 \uc5b4\ub518\uac00\uc5d0\uc11c \uc774\ub8e8\uc5b4\uc838\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uccab \ubc88\uc9f8 \ub2e8\uacc4\ub294 \uae30\uc874 \ucf54\ub4dc\ub97c \ub9ac\ud329\ud130\ub9c1\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \ud30c\ud2b8 3\uc758 '\uc815\ub9d0 \uac04\ub2e8\ud55c \uc608\uc81c'\ub294 \uadf8\ub300\ub85c \uc720\uc9c0\ud558\ub418 \ub2e4\ub978 \ud074\ub798\uc2a4\uc758 \uba54\uc11c\ub4dc\ub85c \uc62e\uaca8\uc57c \ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ub9ac\ud329\ud130\ub9c1\ub41c HomeController\uc640 \uc0c8\ub85c\uc6b4 PersonRepository\uc785\ub2c8\ub2e4:<\/p>\n<pre><code>public class HomeController : Controller\r\n{\r\n    private readonly PersonRepository _personRepo;\r\n\r\n    public HomeController(PersonRepository personRepo)\r\n    {\r\n        _personRepo = personRepo;\r\n    }\r\n\r\n    public ActionResult Index()\r\n    {\r\n        var person = _personRepo.GetPersonByKey(\"foo::123\");\r\n        return Content(\"Name: \" + person.name + \", Address: \" + person.address);\r\n    }\r\n}\r\n\r\npublic class PersonRepository\r\n{\r\n    private readonly IBucket _bucket;\r\n\r\n    public PersonRepository(IBucket bucket)\r\n    {\r\n        _bucket = bucket;\r\n    }\r\n\r\n    public dynamic GetPersonByKey(string key)\r\n    {\r\n        return _bucket.Get(key).Value;\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>\uba87 \uac00\uc9c0 \uc8fc\uc758\ud574\uc57c \ud560 \uc0ac\ud56d:<\/p>\n<ul>\n<li>HomeController\ub294 \ub354 \uc774\uc0c1 Couchbase\uc5d0 \uc9c1\uc811 \uc758\uc874\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 Couchbase API\uac00 \ubcc0\uacbd\ub418\ub294 \uacbd\uc6b0, HomeController\uac00 \uc544\ub2cc PersonRepository\ub9cc \ubcc0\uacbd\ud558\uba74 \ub429\ub2c8\ub2e4.<\/li>\n<li>PersonRepository\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud558\ub294 \ubc29\ubc95\uc744 StructureMap\uc5d0 \uba85\uc2dc\uc801\uc73c\ub85c \uc54c\ub824\uc904 \ud544\uc694\uac00 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. PersonRepository\ub294 \"\uc790\uccb4 \ubc14\uc778\ub529\"\uc774 \uac00\ub2a5\ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \ub300\uc2e0 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub824\uba74(\uc608: IPersonRepository), StructureMap\uc5d0 \uc774\ub97c \uc54c\ub9ac\uae30 \uc704\ud574 DefaultRegistry\ub97c \ubcc0\uacbd\ud574\uc57c \ud569\ub2c8\ub2e4. \ub2e4\ub978 IoC \ucee8\ud14c\uc774\ub108\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \uc0c1\ud669\uc774 \ub2ec\ub77c\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h2>Person \ud074\ub798\uc2a4 \uc0ac\uc6a9\uc744 \uc704\ud55c \ub9ac\ud329\ud130\ub9c1<\/h2>\n<p>\uc704\uc758 \uc608\uc81c\uc5d0\uc11c \uc800\ub294 <code>\ub3d9\uc801<\/code> \uac1d\uccb4\uc785\ub2c8\ub2e4. <code>\ub3d9\uc801<\/code> \ub294 \uc77c\ubd80 \uc0c1\ud669\uc5d0 \uc801\ud569\ud558\uc9c0\ub9cc \uc774 \uacbd\uc6b0\uc5d0\ub294 '\uc0ac\ub78c'\uc774 \ubb34\uc5c7\uc778\uc9c0\uc5d0 \ub300\ud55c \ubcf4\ub2e4 \uad6c\uccb4\uc801\uc778 \uc815\uc758\ub97c \ub0b4\ub9ac\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4. C# \ud074\ub798\uc2a4\ub85c \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>public class Person\r\n{\r\n    public string Name { get; set; } \r\n    public string Address { get; set; }\r\n}\r\n<\/code><\/pre>\n<p>\ub610\ud55c \uc774 \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d \uac1c\uc778 \uc800\uc7a5\uc18c\ub3c4 \uc5c5\ub370\uc774\ud2b8\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>public Person GetPersonByKey(string key)\r\n{\r\n    return _bucket.Get(key).Value;\r\n}\r\n<\/code><\/pre>\n<p>\uc774\uc655 \ud558\ub294 \uae40\uc5d0 \uba87 \uac00\uc9c0 \ub2e8\uacc4\ub97c \uac70\uccd0 \uc81c\ub300\ub85c \ub41c MVC \uc571\uc73c\ub85c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. Content()\ub97c \ubc18\ud658\ud558\ub294 \ub300\uc2e0 Index \uc561\uc158\uc774 View\ub97c \ubc18\ud658\ud558\ub3c4\ub85d \ud558\uace0, \uc5ec\uae30\uc5d0 <em>\ubaa9\ub85d<\/em> \ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. person.cshtml\uc758 \uc77c\ubd80\uc5d0 \uc704\uc784\ud560 Index.cshtml \ud30c\uc77c\uc744 \ub9cc\ub4e4\uaca0\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ubd80\ud2b8\uc2a4\ud2b8\ub7a9\uc744 \uc0ac\uc6a9\ud558\ub294 \ub808\uc774\uc544\uc6c3\uc744 \ucd94\uac00\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \ub9c8\uc9c0\ub9c9 \ubd80\ubd84\uc740 \uc644\uc804\ud788 \ubb34\ub8cc\uc774\uc9c0\ub9cc \uc2a4\ud06c\ub9b0\uc0f7\uc744 \uc880 \ub354 \uba4b\uc9c0\uac8c \ubcf4\uc774\uac8c \ud574\uc904 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc0c8\ub85c\uc6b4 \uc778\ub371\uc2a4 \uc791\uc5c5:<\/p>\n<pre><code>    public ActionResult Index()\r\n    {\r\n        var person = _personRepo.GetPersonByKey(\"foo::123\");\r\n        var list = new List {person};\r\n        return View(list);\r\n    }\r\n<\/code><\/pre>\n<p>Index.cshtml:<\/p>\n<pre class=\"\">@model List&lt;CouchbaseAspNetExample2.Models.Person&gt;\r\n\r\n@{\r\n ViewBag.Title = &quot;Home : Couchbase &amp; ASP.NET Example&quot;;\r\n}\r\n\r\n@if (!Model.Any())\r\n{\r\n &lt;p&gt;There are no people yet.&lt;\/p&gt;\r\n}\r\n\r\n@foreach (var item in Model)\r\n{\r\n @Html.Partial(&quot;_person&quot;, item)\r\n}\r\n<\/pre>\n<p class=\"\">person.cshtml:<\/p>\n<pre class=\"\">@model CouchbaseAspNetExample2.Models.Person \r\n&lt;div <span class=\"hljs-keyword\">\ud074\ub798\uc2a4<\/span>=<span class=\"hljs-string\">\"\ud328\ub110 \ud328\ub110 \uae30\ubcf8\uac12\"<\/span>&gt; \r\n&lt;div <span class=\"hljs-keyword\">\ud074\ub798\uc2a4<\/span>=<span class=\"hljs-string\">\"\ud328\ub110 \uc81c\ubaa9\"<\/span>&gt; \r\n&lt;h2 <span class=\"hljs-keyword\">\ud074\ub798\uc2a4<\/span>=<span class=\"hljs-string\">\"\ud328\ub110 \uc81c\ubaa9\"<\/span>&gt;@Model.Name&lt;\/h2&gt; \r\n&lt;\/div&gt; \r\n&lt;div <span class=\"hljs-keyword\">\ud074\ub798\uc2a4<\/span>=<span class=\"hljs-string\">\"panel-body\"<\/span>&gt; \r\n@Html.Raw(Model.Address) \r\n&lt;\/div&gt; \r\n&lt;\/div&gt;<code><\/code><\/pre>\n<div class=\"panel panel-default\">\n<p>&nbsp;<\/p>\n<\/div>\n<p>\uc774\uc81c \uc880 \ub354 \uba4b\uc9c0\uac8c \ubcf4\uc785\ub2c8\ub2e4. \ub610\ud55c \ub370\ubaa8 \ud6c4\ubc18\ubd80\uc5d0\uc11c\ub294 \uc804\uccb4 \uac1c\uc778 \ubb38\uc11c \ubaa9\ub85d\uc744 \ubcf4\uc5ec\ub4dc\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-.net-part-4-linq2couchbase\/indexofcouchbasedocumentsinbootstrap_001.png\" alt=\"The Index view of Couchbase Person documents in Bootstrap\" \/><\/p>\n<h2>Linq2Couchbase \uc18c\uac1c<\/h2>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ucffc\ub9ac \uc5b8\uc5b4\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/n1ql\/\">N1QL<\/a>. \uc774\ub294 SQL\uc758 \uc0c1\uc704 \uc9d1\ud569\uc73c\ub85c, \uae30\uc874\uc758 SQL \uc9c0\uc2dd\uc744 \ud65c\uc6a9\ud558\uc5ec Couchbase\uc5d0\uc11c JSON \ubb38\uc11c\uc5d0 \ub300\ud574 \ub9e4\uc6b0 \uac15\ub825\ud55c \ucffc\ub9ac\ub97c \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Linq2Couchbase\ub294 \uc5ec\uae30\uc11c \ud55c \uac78\uc74c \ub354 \ub098\uc544\uac00 Linq \ucffc\ub9ac\ub97c N1QL \ucffc\ub9ac\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4(\uc5d4\ud2f0\ud2f0 \ud504\ub808\uc784\uc6cc\ud06c\uac00 Linq \ucffc\ub9ac\ub97c SQL \ucffc\ub9ac\ub85c \ubcc0\ud658\ud558\ub294 \uac83\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c).<\/p>\n<p>Linq2Couchbase\ub294 <a href=\"https:\/\/github.com\/couchbaselabs\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub7a9<\/a>\ub294 \uc544\uc9c1 \ud575\uc2ec\uc801\uc73c\ub85c \uc9c0\uc6d0\ub418\ub294 Couchbase .NET SDK \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uc77c\ubd80\uac00 \uc544\ub2d9\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc5d4\ud2f0\ud2f0 \ud504\ub808\uc784\uc6cc\ud06c, NHibernate.Linq \ub610\ub294 \uae30\ud0c0 Linq \uacf5\uae09\uc790\uc5d0 \uc775\uc219\ud558\ub2e4\uba74 Couchbase\uc5d0 \uc785\ubb38\ud558\ub294 \ub370 \uc88b\uc740 \ubc29\ubc95\uc785\ub2c8\ub2e4. \uc77c\ubd80 \uc791\uc5c5\uc758 \uacbd\uc6b0 \uc5ec\uc804\ud788 \ud575\uc2ec Couchbase .NET SDK\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\uc9c0\ub9cc, Linq2Couchbase\ub85c \ud560 \uc218 \uc788\ub294 \uc77c\uc774 \ub9ce\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc544\uc9c1 \ucd94\uac00\ud558\uc9c0 \uc54a\uc558\ub2e4\uba74 NuGet\uc73c\ub85c Linq2Couchbase\ub97c \ucd94\uac00\ud558\ub294 \uac83\uc73c\ub85c \uc2dc\uc791\ud558\uc138\uc694.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-.net-part-4-linq2couchbase\/nugetlinq2couchbase_002.png\" alt=\"Install Linq2Couchbase with NuGet\" \/><\/p>\n<p>N1QL(\ubc0f \ub530\ub77c\uc11c Linq2Couchbase)\uc740 <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/n1ql\/n1ql-language-reference\/createprimaryindex.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uc0c9\uc778\ub418\ub294 \ubc84\ud0b7<\/a>. Couchbase \ucf58\uc194\ub85c \uc774\ub3d9\ud558\uc5ec '\ucffc\ub9ac' \ud0ed\uc744 \ud074\ub9ad\ud558\uace0, \uae30\ubcf8 \uc778\ub371\uc2a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. <code>\ud5ec\ub85c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/code> \ubc84\ud0b7.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-.net-part-4-linq2couchbase\/createprimaryindexoncouchbasebucket_004.png\" alt=\"Create a primary index on a Couchbase bucket\" \/><\/p>\n<p>\uc778\ub371\uc2a4\uac00 \uc5c6\ub294 \uacbd\uc6b0 Linq2Couchbase\ub294 \"\ud0a4 \uc2a4\ud398\uc774\uc2a4 hello-couchbase\uc5d0 \uae30\ubcf8 \uc778\ub371\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.\"\uc640 \uac19\uc740 \uc720\uc6a9\ud55c \uc624\ub958 \uba54\uc2dc\uc9c0\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4. \uae30\ubcf8 \uc778\ub371\uc2a4 \uc0dd\uc131\uc744 \uc0ac\uc6a9\ud574\uc11c \uc0dd\uc131\ud558\uc138\uc694.\"<\/p>\n<p>Linq2Couchbase\ub97c \uac00\uc7a5 \ud6a8\uacfc\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\ub824\uba74 \uba3c\uc800 Couchbase \ubb38\uc11c\uc5d0 \"\uc720\ud615\" \ud544\ub4dc\ub97c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uc608\ub97c \ub4e4\uc5b4 '\uc0ac\ub78c' \ubb38\uc11c\uc640 '\uc704\uce58' \ubb38\uc11c\ub97c \uad6c\ubd84\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc608\uc5d0\uc11c\ub294 \"\uc0ac\ub78c\" \ubb38\uc11c\ub9cc \ub9cc\ub4e4\uaca0\uc9c0\ub9cc \ucc98\uc74c\ubd80\ud130 \uc774\ub807\uac8c \ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4. \uc720\ud615 \ud544\ub4dc\ub97c \ub9cc\ub4e4\uace0 \"\uc0ac\ub78c\"\uc73c\ub85c \uc124\uc815\ud558\uaca0\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc774 \ud074\ub798\uc2a4\uac00 \ud2b9\uc815 \uc720\ud615\uc758 \ubb38\uc11c\uc5d0 \ub300\ud55c \uac83\uc784\uc744 Linq2Couchbase\uac00 \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d C# \ud074\ub798\uc2a4\uc5d0 \uc18d\uc131\uc744 \ub123\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>using Couchbase.Linq.Filters;\r\n\r\n[DocumentTypeFilter(\"Person\")]\r\npublic class Person\r\n{\r\n    public Person()\r\n    {\r\n        Type = \"Person\";\r\n    }\r\n    public string Type { get; set; }\r\n    public string Name { get; set; } \r\n    public string Address { get; set; }\r\n}\r\n<\/code><\/pre>\n<p>\uc774\ub7ec\ud55c \ubcc0\uacbd\uc744 \uc218\ud589\ud574\ub3c4 \uc571\uc740 \uacc4\uc18d \uc791\ub3d9\ud569\ub2c8\ub2e4. \uc5ec\uc804\ud788 \ud0a4\ub85c \ubb38\uc11c\ub97c \uac80\uc0c9\ud558\uace0 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774\uc81c \ubaa8\ub4e0 \uc0ac\ub78c \ubb38\uc11c\ub97c \uac00\uc838\uc624\ub3c4\ub85d \uc0c9\uc778 \uc791\uc5c5\uc744 \ubcc0\uacbd\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>public ActionResult Index()\r\n{\r\n    var list = _personRepo.GetAll();\r\n    return View(list);\r\n}\r\n<\/code><\/pre>\n<p>\uc0c8\ub85c\uc6b4 GetAll \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac \uba54\uc11c\ub4dc\ub97c \uad6c\ud604\ud574\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre><code>using System.Collections.Generic;\r\nusing System.Linq;\r\nusing Couchbase.Core;\r\nusing Couchbase.Linq;\r\nusing Couchbase.Linq.Extensions;\r\nusing Couchbase.N1QL;\r\n\r\npublic class PersonRepository\r\n{\r\n    private readonly IBucket _bucket;\r\n    private readonly IBucketContext _context;\r\n\r\n    public PersonRepository(IBucket bucket, IBucketContext context)\r\n    {\r\n        _bucket = bucket;\r\n        _context = context;\r\n    }\r\n\r\n    public List GetAll()\r\n    {\r\n        return _context.Query()\r\n           .ScanConsistency(ScanConsistency.RequestPlus)\r\n           .OrderBy(p =&gt; p.Name)\r\n           .ToList();\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>\uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \ubaa8\ub4e0 \uacb0\uacfc\ub97c \uc774\ub984\ubcc4\ub85c \uc815\ub82c\ud558\ub3c4\ub85d Couchbase\uc5d0 \uc9c0\uc2dc\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc6d0\ud558\ub294 \uacbd\uc6b0 \uc775\uc219\ud55c \uc77c\ubc18 Linq \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\ud5d8\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4: \uc5b4\ub514\uc11c, \uc120\ud0dd, \uac00\uc838 \uc624\uae30, \uac74\ub108 \ub6f0\uae30 \ub4f1.<\/p>\n<p>\uc9c0\uae08\uc740 \uc2a4\uce94 \uc77c\uad00\uc131\uc744 \ubb34\uc2dc\ud558\uc138\uc694: \ub098\uc911\uc5d0 \uc790\uc138\ud788 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc IBucketContext\ub294 \uc5b4\ub5a8\uae4c\uc694? IBucketContext\ub294 \uc5d4\ud2f0\ud2f0 \ud504\ub808\uc784\uc6cc\ud06c\uc758 DbContext \ub610\ub294 NHibernate\uc758 ISession\uacfc \uc720\uc0ac\ud569\ub2c8\ub2e4. IBucketContext\ub97c \uac00\uc838\uc624\ub824\uba74 DefaultRegistry\ub97c \uc5c5\ub370\uc774\ud2b8\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre><code>For().Singleton().Use(\"Get a Couchbase Bucket\",\r\n    x =&gt; ClusterHelper.GetBucket(\"hello-couchbase\", \"password!\"));\r\nFor().HttpContextScoped().Use(\"Get a Couchbase Bucket Context\",\r\n    x =&gt; new BucketContext(x.GetInstance()));\r\n<\/code><\/pre>\n<p>\uc774\uac83\uc740 \uc0c8 BucketContext\ub97c \uc0dd\uc131\ud558\uace0 \uac01 HTTP \uc694\uccad\uc73c\ub85c \ubc94\uc704\uac00 \uc9c0\uc815\ub418\uae30\ub97c \uc6d0\ud55c\ub2e4\ub294 \uac83\uc744 StructureMap\uc5d0 \uc54c\ub9ac\ub294 \uac83\uc785\ub2c8\ub2e4. \uad6c\uc870 \ub9f5\uc5d0\uc11c HttpContextScoped\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0, \ub610\ud55c <code>HttpContextLifecycle.DisposeAndClearAll()<\/code> \ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e4\ub978 IoC \ucee8\ud14c\uc774\ub108\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \ub2e4\ub974\uac8c \uad00\ub9ac\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \uc6f9 \uc571\uc744 \ub2e4\uc2dc \ucef4\ud30c\uc77c\ud558\uace0 \uc2e4\ud589\ud558\uba74 \"\uc544\uc9c1 \uc0ac\ub78c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4\"\ub77c\ub294 \uba54\uc2dc\uc9c0\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4. \ub0b4\uac00 \uc5b4\ub514\ub85c \uac14\uc9c0?! \"foo::123\" \ubb38\uc11c\uc5d0 \uc544\uc9c1 \"type\" \ud544\ub4dc\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. Couchbase \ucf58\uc194\ub85c \uc774\ub3d9\ud558\uc5ec \ucd94\uac00\ud558\uc138\uc694.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-.net-part-4-linq2couchbase\/updatecouchbasedocument_003.png\" alt=\"Adding a type field to a Couchbase document\" \/><\/p>\n<p>\uadf8\ub807\uac8c \ud55c \ud6c4 \uc6f9 \ud398\uc774\uc9c0\ub97c \uc0c8\ub85c\uace0\uce68\ud558\uba74 \uadf8 \uc0ac\ub78c\uc774 \ub2e4\uc2dc \ub098\ud0c0\ub0a9\ub2c8\ub2e4.<\/p>\n<h2>\uc2a4\uce94 \uc77c\uad00\uc131\uc5d0 \ub300\ud55c \uac04\ub2e8\ud55c \ucc38\uace0 \uc0ac\ud56d<\/h2>\n<p>Linq2Couchbase\ub294 \ucffc\ub9ac\ub97c \uc0dd\uc131\ud558\uace0 \uc2e4\ud589\ud558\uae30 \uc704\ud574 \uc778\ub371\uc2a4\uc5d0 \uc758\uc874\ud569\ub2c8\ub2e4. \uc0c8 \ubb38\uc11c\ub97c \ucd94\uac00\ud558\uba74 \uc0c9\uc778\uc744 \uc5c5\ub370\uc774\ud2b8\ud574\uc57c \ud569\ub2c8\ub2e4. \uc778\ub371\uc2a4\uac00 \uc5c5\ub370\uc774\ud2b8\ub420 \ub54c\uae4c\uc9c0 \uc544\uc9c1 \uc778\ub371\uc2f1\ub418\uc9c0 \uc54a\uc740 \ubb38\uc11c\ub294 (\uae30\ubcf8\uc801\uc73c\ub85c) Linq2Couchbase\uc5d0\uc11c \ubc18\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc694\uccad \ud50c\ub7ec\uc2a4\uc758 \uc2a4\uce94 \uc77c\uad00\uc131(<a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/architecture\/querying-data-with-n1ql.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uc2a4\uce94 \uc77c\uad00\uc131\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 Couchbase \uc124\uba85\uc11c\ub97c \ucc38\uc870\ud558\uc138\uc694.<\/a>), Linq2Couchbase\ub294 \ucffc\ub9ac\ub97c \uc2e4\ud589\ud558\uace0 \uc751\ub2f5\uc744 \ubc18\ud658\ud558\uae30 \uc804\uc5d0 \uc778\ub371\uc2a4\uac00 \uc5c5\ub370\uc774\ud2b8\ub420 \ub54c\uae4c\uc9c0 \ud6a8\uacfc\uc801\uc73c\ub85c \ub300\uae30\ud569\ub2c8\ub2e4. \uc774\uac83\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc124\uacc4\ud560 \ub54c \uace0\ub824\ud574\uc57c \ud560 \uc7a5\ub2e8\uc810\uc785\ub2c8\ub2e4. \uc6d0\uc2dc \uc18d\ub3c4\uc640 \uc644\uc804\ud55c \uc815\ud655\ub3c4 \uc911 \uc5b4\ub290 \uac83\uc774 \ub354 \uc911\uc694\ud560\uae4c\uc694?<\/p>\n<p>\uac04\ub2e8\ud55c \uc608\ub85c \ucf58\ud150\uce20 \uad00\ub9ac \uc2dc\uc2a4\ud15c\uc744 \ub9cc\ub4e0\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li>\uad00\ub9ac \ub3c4\uad6c\ub97c \ub9cc\ub4e4\uace0 \uc788\ub2e4\uba74 \uc131\ub2a5\ubcf4\ub2e4 \uc644\ubcbd\ud55c \uc815\ud655\uc131\uc744 \ub354 \uc911\uc694\ud558\uac8c \uc5ec\uae38 \uac83\uc785\ub2c8\ub2e4.\n<ul>\n<li>\uad00\ub9ac\uc790\ub294 \ub370\uc774\ud130\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \uad00\ub9ac\ud558\uae30 \uc704\ud574 \ub370\uc774\ud130\uc758 \ub0b4\uc6a9\uc744 \uc815\ud655\ud788 \ud30c\uc545\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<li>\uad00\ub9ac\uc790 \uae30\ub2a5\uc740 \uacf5\uac1c \uae30\ub2a5\uc5d0 \ube44\ud574 \uc0ac\uc6a9 \ube48\ub3c4\uac00 \ub0ae\uae30 \ub54c\ubb38\uc5d0 \uc5b4\ub290 \uc815\ub3c4\uc758 \uc9c0\uc5f0\uc740 \uc6a9\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<li>\ubaa8\ub4e0 \ucf58\ud150\uce20\ub97c \ub098\uc5f4\ud558\ub294 \uacf5\uac1c \ud398\uc774\uc9c0\ub97c \ub9cc\ub4dc\ub294 \uacbd\uc6b0 \uc6d0\uc2dc \uc18d\ub3c4\uac00 \ub354 \uc911\uc694\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n<ul>\n<li>\uc0c8 \ucf58\ud150\uce20 \ud398\uc774\uc9c0\uac00 \ub300\uc911\uc5d0\uac8c \ud45c\uc2dc\ub418\ub294 \ub370 1~2\ucd08 \uc815\ub3c4 \uc2dc\uac04\uc774 \ub354 \uac78\ub9ac\ub354\ub77c\ub3c4 \uad1c\ucc2e\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\uc0ac\uc774\ud2b8\uc758 \uacf5\uac1c \ubd80\ubd84\uc740 \ub9e4\uc6b0 \uc790\uc8fc \uc561\uc138\uc2a4\ub418\ubbc0\ub85c \uc131\ub2a5\uc774 \uc911\uc694\ud55c \uc694\uc18c\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<li>\uc774\ub294 \uc608\uc2dc\uc77c \ubfd0\uc774\uba70 \uc5b4\ub5a4 \uc720\ud615\uc758 \uc2a4\uce94 \uc77c\uad00\uc131\uc744 \uc0ac\uc6a9\ud574\uc57c \ud558\ub294\uc9c0\ub294 \uc0ac\uc6a9\uc790\uc640 \uc0ac\uc6a9 \uc0ac\ub840\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9d1\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h2>\uacb0\ub860<\/h2>\n<p>Linq2Couchbase\ub294 \uce5c\uc219\ud55c \ubc29\uc2dd\uc73c\ub85c Couchbase\uc640 \ud568\uaed8 \uc791\uc5c5\ud560 \uc218 \uc788\ub294 \uac15\ub825\ud55c \ub3c4\uad6c\uc785\ub2c8\ub2e4. \uc624\ud508 \uc18c\uc2a4\uc774\uc9c0\ub9cc \uc544\uc9c1 Couchbase\uc5d0\uc11c \uacf5\uc2dd\uc801\uc73c\ub85c \uc9c0\uc6d0\ud558\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4. \uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc758 \ubaa8\ub4e0 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-asp-net-blog-example-2\">Github<\/a>.<\/p>\n<p>\ub2e4\uc74c \uae00\uc5d0\uc11c\ub294 Linq2Couchbase\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c\ub97c \ub9cc\ub4e4\uace0, \uc5c5\ub370\uc774\ud2b8\ud558\uace0, \uc0ad\uc81c\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4. \ub610\ud55c SQL Server\uc640 \uac19\uc740 \uae30\uc874 RDBMS\uc640 \ube44\uad50\ud558\uc5ec Couchbase\uac00 \uc81c\uacf5\ud558\ub294 \uc720\uc5f0\uc131\uc758 \ucc28\uc774\uc810\ub3c4 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc9c8\ubb38\uc774 \uc788\uc73c\uc2e0\uac00\uc694? \uae30\ub300\ud55c \ub300\ub85c \uc791\ub3d9\ud558\uc9c0 \uc54a\ub098\uc694? \uc758\uacac\uc744 \ub0a8\uaca8 \uc8fc\uc138\uc694, <a href=\"https:\/\/twitter.com\/mgroves\">\ud2b8\uc704\ud130\uc5d0\uc11c \ub098\ub97c \ud551\ud558\uae30<\/a>\ub97c \ucc38\uc870\ud558\uac70\ub098 \uc774\uba54\uc77c(matthew.groves AT couchbase DOT com)\ub85c \ubb38\uc758\ud558\uc2dc\uba74 \ub3c4\uc640\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4!<\/p>","protected":false},"excerpt":{"rendered":"<p>Part 1 covered how to install and setup Couchbase on Windows Part 2 covered some Couchbase lingo that you&#8217;ll need to know Part 3 showed the very simplest example of using Couchbase in ASP.NET In this blog post, I&#8217;m going [&hellip;]<\/p>","protected":false},"author":71,"featured_media":13873,"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,1819,1812],"tags":[1468,1469],"ppma_author":[8937],"class_list":["post-2267","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-asp-dotnet","category-c-sharp","category-couchbase-server","category-data-modeling","category-n1ql-query","tag-linq","tag-linq2couchbase"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase with Windows &amp; .NET - Part 4 - The Couchbase Blog<\/title>\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\/couchbase-with-windows-net-part-4-linq2couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase with Windows and .NET - Part 4 - Linq2Couchbase\" \/>\n<meta property=\"og:description\" content=\"Part 1 covered how to install and setup Couchbase on Windows Part 2 covered some Couchbase lingo that you&#8217;ll need to know Part 3 showed the very simplest example of using Couchbase in ASP.NET In this blog post, I&#8217;m going [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-with-windows-net-part-4-linq2couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-18T14:32:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-09T14:07:56+00:00\" \/>\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=\"7\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Couchbase with Windows and .NET &#8211; Part 4 &#8211; Linq2Couchbase\",\"datePublished\":\"2016-05-18T14:32:38+00:00\",\"dateModified\":\"2025-10-09T14:07:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/\"},\"wordCount\":1360,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Linq\",\"linq2couchbase\"],\"articleSection\":[\".NET\",\"ASP.NET\",\"C#\",\"Couchbase Server\",\"Data Modeling\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/\",\"name\":\"Couchbase with Windows & .NET - Part 4 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-05-18T14:32:38+00:00\",\"dateModified\":\"2025-10-09T14:07:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase with Windows and .NET &#8211; Part 4 &#8211; Linq2Couchbase\"}]},{\"@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":"Couchbase with Windows & .NET - Part 4 - The Couchbase Blog","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\/couchbase-with-windows-net-part-4-linq2couchbase\/","og_locale":"ko_KR","og_type":"article","og_title":"Couchbase with Windows and .NET - Part 4 - Linq2Couchbase","og_description":"Part 1 covered how to install and setup Couchbase on Windows Part 2 covered some Couchbase lingo that you&#8217;ll need to know Part 3 showed the very simplest example of using Couchbase in ASP.NET In this blog post, I&#8217;m going [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-with-windows-net-part-4-linq2couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-05-18T14:32:38+00:00","article_modified_time":"2025-10-09T14:07:56+00:00","author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"7\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Couchbase with Windows and .NET &#8211; Part 4 &#8211; Linq2Couchbase","datePublished":"2016-05-18T14:32:38+00:00","dateModified":"2025-10-09T14:07:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/"},"wordCount":1360,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Linq","linq2couchbase"],"articleSection":[".NET","ASP.NET","C#","Couchbase Server","Data Modeling","SQL++ \/ N1QL Query"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/","name":"Couchbase with Windows & .NET - Part 4 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-05-18T14:32:38+00:00","dateModified":"2025-10-09T14:07:56+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-net-part-4-linq2couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase with Windows and .NET &#8211; Part 4 &#8211; Linq2Couchbase"}]},{"@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\/2267","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=2267"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2267\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2267"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}