There are six known public C# libraries for using CouchDB:
LoveSeat - "Bringing Couchdb and .Net a little closer". Works well with Generics for populating Domain objects. (Even when nested!). IoC and TDD friendly.
- Support for ETags!
- Support for Streaming attachments
- Generic support for translating view results to Domain objects.
For more information see the README.
git clone git://github.com/soitgoes/LoveSeat.git
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.
- Convention based mapping for saving POCOs
- Base document types or interfaces for more control
- Support for caching (Symbiote integration will provide memcached support)
- Attachment support
- Bulk-document API
- Real-time database change stream
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!
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
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.
- Asynchronous or synchronous API
JSON serialisation powered by Newtonsoft.Json
- Continuous Update Support
- Replication Management (using _replicator database for CouchDB 1.1)
- Tested with Mono on Linux
Download here or clone it
git clone git://github.com/vdaron/DreamSeat.git
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.
- Supports Net4.0, .Net4.5, Windows Store
- Asynchronous API (using C# 5 async / await)
Pluggable JSON serialisation (default is Json.NET)
- Changes feed listener