{"id":2259,"date":"2016-05-13T14:14:10","date_gmt":"2016-05-13T14:14:10","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2259"},"modified":"2025-10-09T07:09:51","modified_gmt":"2025-10-09T14:09:51","slug":"couchbase-with-windows-and-net-part-3-asp-net-mvc","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/","title":{"rendered":"Couchbase with Windows and .NET &#8211; Part 3 &#8211; ASP.NET MVC"},"content":{"rendered":"<p><em>This blog post is part 3 of a series<\/em>:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-.net---part-1\/\">Part 1 covered how to install and setup Couchbase on Windows<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-.net---part-2\/\">Part 2 covered some Couchbase lingo that you&#8217;ll need to know<\/a><\/li>\n<\/ul>\n<p>Are you ready to write some code? In this blog post, we&#8217;re going to start a new ASP.NET MVC project, add the Couchbase SDK to it with NuGet, and get the infrastructure in place to start using Couchbase.<\/p>\n<p>I just started in Visual Studio with a File-&gt;New, and selected ASP.NET Web Application, then selected &#8220;MVC&#8221;. I&#8217;m going to assume you have some familiarity with ASP.NET MVC, but if anything looks out of the ordinary to you, please leave a comment, <a href=\"https:\/\/twitter.com\/mgroves\">ping me on Twitter<\/a>, or email me (matthew.groves AT couchbase DOT com) with your questions.<\/p>\n<h2>Installing the Couchbase client library<\/h2>\n<p>The first thing we&#8217;ll need to do is add the Couchbase .NET client. You can do this with the NuGet UI by right-clicking on &#8220;References&#8221;, clicking &#8220;Manage NuGet Packages&#8221;, clicking &#8220;Browse&#8221;, and then searching for &#8220;CouchbaseNetClient&#8221;. (If you want to, you can search for &#8220;Linq2Couchbase&#8221; instead. Installing that will also cause CouchbaseNetClient to be installed, but I won&#8217;t actually be using any Linq2Couchbase until later blog posts).<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-and-.net---part-3---asp.net-mvc\/nugetui_001.png\" alt=\"NuGet UI for installing CouchbaseNetClient\" \/><\/p>\n<p>If you prefer the NuGet command line, then open up the Package Manager Console, and type <code>Install-Package CouchbaseNetClient<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-and-.net---part-3---asp.net-mvc\/nugetpackagemanagerconsole_002.png\" alt=\"NuGet Package Manager Console for installing CouchbaseNetClient\" \/><\/p>\n<h2>Getting the ASP.NET app to talk to a Couchbase cluster<\/h2>\n<p>Now let&#8217;s setup the ASP.NET app to be able to connect to Couchbase. The first thing we need to do is locate the Couchbase Cluster. The best place to do this is in the Global.asax.cs when the application starts. At a minimum, we need to specify one node in the cluster, and give that to the <code>ClusterHelper<\/code>. This only needs to be done once in <code>Application_Start<\/code>. When the application ends, it&#8217;s a good idea to close the <code>ClusterHelper<\/code> in order to clean up and dispose of resources that aren&#8217;t needed.<\/p>\n<pre><code>public class MvcApplication : System.Web.HttpApplication\r\n{\r\n    protected void Application_Start()\r\n    {\r\n        AreaRegistration.RegisterAllAreas();\r\n        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);\r\n        RouteConfig.RegisterRoutes(RouteTable.Routes);\r\n\r\n        var config = new ClientConfiguration();\r\n        config.Servers = new List\r\n        {\r\n            new Uri(\"https:\/\/localhost:8091\")\r\n        };\r\n        config.UseSsl = false;\r\n        ClusterHelper.Initialize(config);\r\n    }\r\n\r\n    protected void Application_End()\r\n    {\r\n        ClusterHelper.Close();\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Some notes:<\/p>\n<ul>\n<li>This code assumes that you are running a Couchbase node on your local machine (localhost). If that&#8217;s not true, then substitute localhost. For instance, I have a Couchbase node running on a different machine in my office, so I would substitute <code>new Uri(\"https:\/\/192.168.1.5\")<\/code>.<\/li>\n<li>I have UseSsl set to false, because I don&#8217;t have a certificate running on my Couchbase node. If you are accessing Couchbase over the internet, you can use SSL to prevent your data traffic from being sent in the clear.<\/li>\n<\/ul>\n<h2>Setting up an IoC container<\/h2>\n<p>Once the ClusterHelper is initialized, we can use it to access buckets.<\/p>\n<p>There are many ways you can proceed to wire up dependencies in your app, but I like to use an IoC container. There are many IoC tools available for .NET, but my favorite is <a href=\"https:\/\/structuremap.github.io\/\">StructureMap<\/a>. There&#8217;s another NuGet package that integrates StructureMap with MVC for you. After installing this, MVC Controller objects will be instantiated via StructureMap. Install, with NuGet (UI or console), <code>StructureMap.MVC5<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-and-.net---part-3---asp.net-mvc\/nugetpackagemanagerconsole2_002b.png\" alt=\"Installing StructureMap.MVC5 with NuGet\" \/><\/p>\n<p>It will add StructureMap to your project, as well as several other files. One of them is DefaultRegistry.cs, which sets up StructureMap to use default conventions.<\/p>\n<p>What we&#8217;ll need to do with Couchbase, is to modify that registry so that StructureMap can give us an instance of IBucket. An IBucket, then, is used to interact with a Couchbase bucket (get documents, add documents, update documents, and so on). Here&#8217;s is how to setup an IBucket registration:<\/p>\n<pre><code> public class DefaultRegistry : Registry {\r\n    #region Constructors and Destructors\r\n\r\n    public DefaultRegistry() {\r\n        Scan(\r\n            scan =&gt; {\r\n                scan.TheCallingAssembly();\r\n                scan.WithDefaultConventions();\r\n                scan.With(new ControllerConvention());\r\n            });\r\n        \/\/ this next 'For' is what I've added for Couchbase\r\n        For().Singleton().Use(\"Get a Couchbase Bucket\",\r\n            x =&gt; ClusterHelper.GetBucket(\"hello-couchbase\", \"password!\"));\r\n    }\r\n\r\n    #endregion\r\n}\r\n<\/code><\/pre>\n<p>In this example:<\/p>\n<ul>\n<li>I&#8217;m using the ClusterHelper to get a specific bucket (which I called &#8216;hello-couchbase&#8217;, but you can call whatever you want). Make sure that this bucket exists in Couchbase (you can use &#8216;default&#8217; or one of the example buckets if you set one up in <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-.net---part-1\/\">part 1 of this blog series<\/a>).<\/li>\n<li>Putting a password on a bucket is not required, but it&#8217;s a good idea.<\/li>\n<li>The IBucket instance is a singleton, because there is no reason to have multiple instances of it.<\/li>\n<\/ul>\n<h2>Using the IBucket in a controller<\/h2>\n<p>Just to show that this works, go ahead and add IBucket to a constructor of a controller, say HomeController. StructureMap has already been setup to instantiate controllers, and we already told it how to instantiate an IBucket. (In the long run, you will probably not want to use IBucket directly in the controller; more on that in future blog posts).<\/p>\n<pre><code>public class HomeController : Controller\r\n{\r\n    private readonly IBucket _bucket;\r\n\r\n    public HomeController(IBucket bucket)\r\n    {\r\n        _bucket = bucket;\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Next, add a document to your bucket, directly in Couchbase Console. Make note of the key you give it.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-and-.net---part-3---asp.net-mvc\/couchbasecreatedocument_003.png\" alt=\"Specifying a key for a new document in Couchbase\" \/><\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-and-.net---part-3---asp.net-mvc\/couchbasecreatedocument_004.png\" alt=\"Creating a document in Couchbase\" \/><\/p>\n<p>Now, add an action to HomeController. This is a throwaway action just for demonstration purposes. It&#8217;s the simplest thing that can be done: it will get the document based on the key, and write the document values in the response.<\/p>\n<pre><code>    public ActionResult Index()\r\n    {\r\n        var doc = _bucket.Get(\"foo::123\");\r\n        return Content(\"Name: \" + doc.Value.name + \", Address: \" + doc.Value.address);\r\n    }\r\n<\/code><\/pre>\n<p><code>doc.Value<\/code> is of type <code>dynamic<\/code>, so make sure that the fields you use (in my case, name and address) match up to the JSON document you put into the bucket. Run your MVC site in a browser, and you should see something like this:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/couchbase-with-windows-and-.net---part-3---asp.net-mvc\/couchbaseaspnethelloworld_005b.png\" alt=\"Outputting the document values to a browser\" \/><\/p>\n<p>Congratulations, you&#8217;ve successfully written an ASP.NET site that uses Couchbase. That wasn&#8217;t so hard, was it?<\/p>\n<h2>Conclusion<\/h2>\n<p>I&#8217;ve shown you the very basics of connecting to and use Couchbase in ASP.NET MVC. But we can do a lot better. In the next blog post, I&#8217;m going to show you how to use Linq2Couchbase to build an entity, a repository, and how to use this repository to make a website with actual functionality. As always, if you need help with anything, please leave a comment, <a href=\"https:\/\/twitter.com\/mgroves\">ping me on Twitter<\/a>, or email me (matthew.groves AT couchbase DOT com).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog post is part 3 of a series: Part 1 covered how to install and setup Couchbase on Windows Part 2 covered some Couchbase lingo that you&#8217;ll need to know Are you ready to write some code? In this [&hellip;]<\/p>\n","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,1816],"tags":[],"ppma_author":[8937],"class_list":["post-2259","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-asp-dotnet","category-couchbase-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase with Windows &amp; .NET \u2013 Part 3 - 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\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase with Windows and .NET - Part 3 - ASP.NET MVC\" \/>\n<meta property=\"og:description\" content=\"This blog post is part 3 of a series: Part 1 covered how to install and setup Couchbase on Windows Part 2 covered some Couchbase lingo that you&#8217;ll need to know Are you ready to write some code? In this [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-13T14:14:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-09T14:09:51+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=\"6 minutes\" \/>\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-and-net-part-3-asp-net-mvc\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Couchbase with Windows and .NET &#8211; Part 3 &#8211; ASP.NET MVC\",\"datePublished\":\"2016-05-13T14:14:10+00:00\",\"dateModified\":\"2025-10-09T14:09:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/\"},\"wordCount\":941,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\".NET\",\"ASP.NET\",\"Couchbase Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/\",\"name\":\"Couchbase with Windows & .NET \u2013 Part 3 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-05-13T14:14:10+00:00\",\"dateModified\":\"2025-10-09T14:09:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#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-and-net-part-3-asp-net-mvc\/#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 3 &#8211; ASP.NET MVC\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\":\"en-US\",\"@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\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase with Windows & .NET \u2013 Part 3 - 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\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/","og_locale":"en_US","og_type":"article","og_title":"Couchbase with Windows and .NET - Part 3 - ASP.NET MVC","og_description":"This blog post is part 3 of a series: Part 1 covered how to install and setup Couchbase on Windows Part 2 covered some Couchbase lingo that you&#8217;ll need to know Are you ready to write some code? In this [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-05-13T14:14:10+00:00","article_modified_time":"2025-10-09T14:09:51+00:00","author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Couchbase with Windows and .NET &#8211; Part 3 &#8211; ASP.NET MVC","datePublished":"2016-05-13T14:14:10+00:00","dateModified":"2025-10-09T14:09:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/"},"wordCount":941,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":[".NET","ASP.NET","Couchbase Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/","name":"Couchbase with Windows & .NET \u2013 Part 3 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-05-13T14:14:10+00:00","dateModified":"2025-10-09T14:09:51+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-with-windows-and-net-part-3-asp-net-mvc\/#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-and-net-part-3-asp-net-mvc\/#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 3 &#8211; ASP.NET MVC"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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":"en-US","@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\/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 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."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2259"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2259\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2259"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}