A newer version of this documentation is available.

View Latest
March 30, 2025
+ 12

3.0.15 — November 2023

Version 3.0.15 for C#.Net delivers the following features and enhancements:

Known Issues

None for this release

Deprecations

None for this release

3.0.12 — June 2023

Version 3.0.12 for C#.Net delivers the following features and enhancements:

Known Issues

None for this release.

3.0.8 — February 2023

Version 3.0.8 for C#.Net delivers the following features and enhancements:

Issues and Resolutions

None for this release.

Known Issues

None for this release.

3.0.2 — August 2022

Version 3.0.2 of Couchbase Lite for C#.Net delivers a number of fixes and enhancements.

Issues and Resolutions

Fixed Issues

Known Issues

None in this release

3.0.15 — February 2022

On upgrading from a 2.x release, all Couchbase Lite databases will be automatically re-indexed on initial database open.
This can result in a delay before the database is usable.

New Features

SQL++/N1QL Query Strings

Couchbase Lite’s SQL++ for Mobile query API vastly simplifies the integration of Couchbase Lite within hybrid/cross platform apps.

N1QL for Mobile is an implementation of the emerging SQL-for-JSON query language specification (SQL++). It provides native, hybrid and cross-platform mobile app developers with a consistent, convenient and flexible interface to query JSON documents within the embedded database using a SQL-based syntax. This means developers can reuse queries across platforms, reducing development, testing and maintenance costs.

Read More . . . SQL++ for Mobile

Enhancements

Auto-purge on Channel Access Revocation

An auto-purge feature is introduced for loss of access to channels and the documents in them. This is important for enforcement of data governance and data retention policies.

Channels are the fundamental mechanism for enforcement of access control using Sync Gateway. They guarantee that only users with access to a specific channel can access documents in that channel.

When a user loses access to a channel (and so to its documents) Couchbase Lite clients will auto purge all local documents on devices that belong to the revoked channel (during Pull or PushAndPull replication), unless the user has access to the document via some other channel.

Document API Support for JSON Data

The Couchbase Lite API now offers out-of-the box support for document data in JSON format. This will make it easier for developers' applications to store, transform and manipulate JSON data in the database.

The API offers JSON support for Documents, MutableDocuments, Arrays, MutableArrays, Dictionaries, MutableDictionaries and Query Results.

Read More . . . Documents | Blobs

Replicator Change Listeners

The API is enhanced to allow replicator listeners to be added at any point without requiring a replicator restart.

Other Enhancements

API Changes

This content introduces the changes made to the Couchbase Lite for C#.Net API for release 3.0.15.

Starting from this release Couchbase Lite for C#.Net requires Visual Studio 2019+ and uses .Net Core 3.1 (updating from .Net Core 2.0).

Breaking Change

The function ATAN2(x, y), which returns the principal value of the arc tangent of y/x, now becomes ATAN2(y, x); that is, the arguments are reversed in line with common notation.

Removed

Activate

We have removed the method Activate() from all platform support libraries except Support.Android (Xamarin Android)

EnableTextLogging()

We have removed the obsolete method EnableTextLogging() from all the platform support libraries.

ResetCheckpoint

The method ResetCheckpoint() has been removed. Use the reset: argument when starting the replicator instead.

Before
java
replicator.ResetCheckpoint(); replicator.Start();
After
java
replicator.Start(true) (1)
1 Set the reset: argument true to initiate a replicator checkpoint reset
SetLogLevel()

We have removed the method Database.setLogLevel()
Use Database.log.console instead:

Before
java
Database.SetLogLevel(LogDomain.Replicator, LogLevel.Verbose); Database.SetLogLevel(LogDomain.Query, LogLevel.Verbose);
After
java
Database.Log.Console.Domains = LogDomain.All; Database.Log.Console.LogLevel = LogLevel.Verbose;

Database.Compact

We have removed the method Database.compact().
Use the method Database.PerformMaintenance() and the enum MaintenanceType instead

Before
java
var db = new Database("thisdb"); db.Compact()
After
java
var db = new Database("thisdb"); db.PerformMaintenance(MaintenanceType.Compact)

Deprecated API

Match

We will remove Match at the next major release.
You should plan to switch to using the alternative FullTextFunction.match(indexName:) at the earliest opportunity.

Before
java
var whereClause = FullTextExpression.Index("nameFTSIndex").Match("'querystring'"); using (var query = QueryBuilder.Select(SelectResult.Expression(Meta.ID)) .From(DataSource.Database(db)) .Where(whereClause)) { foreach (var result in query.Execute()) { Console.WriteLine($"Document id {result.GetString(0)}"); } }
After
java
var whereClause = FullTextFunction.Match("nameFTSIndex"),"'querystring'"); (1) using (var query = QueryBuilder.Select(SelectResult.Expression(Meta.ID)) .From(DataSource.Database(db)) .Where(whereClause)) { foreach (var result in query.Execute()) { Console.WriteLine($"Document id {result.GetString(0)}"); } }
1 Here we use FullTextFunction.match(indexName:) to build the query
IsNullOrMissing

We will remove isNullOrMissing
You should plan to switch to using the alternative IsNotValued()

at the earliest opportunity.

Before
java
var query = QueryBuilder.Select(SelectResult.All()) .From(DataSource.Database(db)) .Where(Expression.Property("missingprop").IsNullOrMissing())
After
java
var query = QueryBuilder.Select(SelectResult.All()) .From(DataSource.Database(db)) .Where(Expression.Property("missingprop").IsNotValued())
NotNullOrMissing

We will remove notNullOrMissing.
You should plan to switch to using the alternative isValued() at the earliest opportunity.

| isNotValued()

Before
java
var query = QueryBuilder.Select(SelectResult.All()) .From(DataSource.Database(db)) .Where(Expression.Property("notmissingprop").NotNullOrMissing())
After
java
var query = QueryBuilder.Select(SelectResult.All()) .From(DataSource.Database(db)) .Where(Expression.Property("notmissingprop").IsValued())

Known Issues

None for this release.

Fixed Issues

Deprecated in this Release

Items (features and-or functionality) are marked as deprecated when a more current, and usually enhanced, alternative is available.

Whilst the deprecated item will remain usable, it is no longer supported, and will be removed in a future release — see also: Removed in this Release You should plan to move to an alternative, supported, solution as soon as practical.

None for this release.

Previously Deprecated

None specified

Removed in this Release

Support Notices

This section documents any support-related notes, constraints and changes.

New

None specified in this release

Ongoing

None specified