There are six known public C# libraries for using CouchDB:

  1. LoveSeat

  2. Relax

  3. Divan

  4. SharpCouch (inactive)

  5. DreamSeat

  6. MyCouch

LoveSeat

LoveSeat - "Bringing Couchdb and .Net a little closer". Works well with Generics for populating Domain objects. (Even when nested!). IoC and TDD friendly.

* Features

download now

For more information see the README.

git clone git://github.com/soitgoes/LoveSeat.git

Relax

The Relax library (http://github.com/arobson/Relax) provides interfaces for both server control (administrative tasks, replication, etc.) and a repository model for working with CouchDB. As the author of Relax, I can say that you should definitely take a look at Relax as it provides an extensible, IoC friendly, repository pattern for working with domain model persistence against my favorite document store.

* Features

Documentation is currently found at the Symbiote wiki: http://www.sharplearningcurve.com/wiki/Symbiote-Relax.ashx. There is also a comprehensive demo that's part of the source on github which shows some of Relax's more interesting capabilities, such as the ability to subscribe to changes in a database as they happen.

git clone git://github.com/arobson/Relax.git

Relax does not currently provide Lucene support. Congrats to Henrik for supporting that in Divan!

Divan

The git repository at http://github.com/foretagsplatsen/Divan has a relatively complete C# library for CouchDB using Newtonsoft.JSON and NUnit as its only external dependencies. Divan is actively maintained and in use at Foretagsplatsen (a swedish company using it in their core system). Being the author of Divan I claim it to be much more complete than SharpCouch :)

For more information see the README.

git clone git://github.com/foretagsplatsen/Divan.git

SharpCouch

The project at http://code.google.com/p/couchbrowse contains a simple wrapper library for CouchDB, called SharpCouch, and a GUI client which makes use of the library. The GUI client code should serve as a good usage example, although the wrapper class is documented and fairly self-explanatory anyway.

You can get the source by issuing the following SVN command:

svn checkout http://couchbrowse.googlecode.com/svn/trunk/ couchbrowse

The project was built with SharpDevelop 2.2, but should work out of the box with Visual Studio 2005. Getting it to work with MonoDevelop should be reasonably easy, but has not been tried yet.

DreamSeat

DreamSeat is a CouchDB client for the .NET plateform. It is based on LoveSeat from Martin Murphy. Thanks to Mindtouch Dream, all the API calls can be executed asychronously or sychronously.

Main Features

Download here or clone it

git clone git://github.com/vdaron/DreamSeat.git

MyCouch

MyCouch asynchronous CouchDb client for .Net - builds on top of the asynchronous HTTP client and uses JSON.Net to provide flexible serialization behaviour. It tries to keep the domain language of CouchDb instead of bringing in generic repositories and other confusing stuff. MyCouch lets you work with raw JSON and/or entities/POCOS without requiring any implementation of interfaces, base classes etc. MyCouch provides you with some model conventions like injection of $doctype to the document. It is pluggable. If you don't like some piece, then hook in your implementation instead.

MyCouch is distributed via NuGet. You can find the CouchDb package here.

Main Features