C# CouchDB连接

C# CouchDB连接,c#,connection,couchdb,C#,Connection,Couchdb,我试图连接到CouchDB,但我似乎在任何地方都找不到关于它的清晰解释。这是我在C#中尝试过的,但它没有任何作用 using (var db = new MyCouch.Client("http://127.0.0.1:5984/db")) { var db = "{'_id': '1', '$doctype': 'db', 'name': '1'}"; var response = db.Documents.Post(db);

我试图连接到CouchDB,但我似乎在任何地方都找不到关于它的清晰解释。这是我在C#中尝试过的,但它没有任何作用

using (var db = new MyCouch.Client("http://127.0.0.1:5984/db"))
        {
            var db = "{'_id': '1', '$doctype': 'db', 'name': '1'}";
            var response = db.Documents.Post(db);
            Console.Write(response.GenerateToStringDebugVersion());
        }

有人能给我解释一下如何连接以及如何简单地插入数据吗?

连接到CouchDB的简单方法是使用System.Net.Http.HttpClient并跳过客户端库本身(尽管有一些很好的方法)

因为CouchDB API是HTTP,所以GET、PUT POST和DELETE是您需要的主要方法,下面提供了一个通用方法包装PUT的示例,使用本机JSON serialiser接受POCO模型T并将其作为文档写入(为了清楚起见,省略了序列化异常处理)

如果使用基本身份验证,则可以使用凭据作为服务器Url的前缀,例如:如果使用Cookie身份验证,则使用新的CookieContainer设置HttpClientHandler,并将处理程序传递给HttpClient构造函数

最后两项说明:

  • 检查提交PUT/db/newid与提交POST/db以创建文档之间的差异
  • 如果需要在同一请求上创建多个文档(即,在同一请求上对新文档进行分组以获得多个文档的ACID插入),还可以查看批量文档API
    public async Task<R> Put<T, R>(T docObject)
    {  
       string DbName = "demodb";
       string NewDocId = "newDocId";

       // Valid paths, methods and response codes are documented here: http://docs.couchdb.org/en/stable/http-api.html

       using (var httpClient = new HttpClient())
       {
          httpClient.BaseAddress = new Uri("http://server:5984/");
          httpClient.DefaultRequestHeaders.Accept.Clear();
          httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

          // NB: PutAsJsonAsync is an extension method defined in System.Net.Http.Formatting
          var response = await httpClient.PutAsJsonAsync(DbName + "/" + NewDocId, docObject);
          R returnValue;
          if (response.StatusCode == HttpStatusCode.OK)
          {
             returnValue = await response.Content.ReadAsAsync<R>();
          }
          // Check the docs for response codes returned by each method.  
          // Do not forget to check for HttpStatusCode.Conflict (HTTP 409) and respond accordingly.
       }
   }
public class CreateResponse
{
    // use of JsonPropertyAttribute is supported on properties if needed.
    public bool ok { get; set; }
    public string id { get; set; }
    public string rev { get; set; }
    public string error { get; set; }
    public string reason { get; set; }
}