Realm 10.16.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Realm --version 10.16.0
NuGet\Install-Package Realm -Version 10.16.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Realm" Version="10.16.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Realm --version 10.16.0
#r "nuget: Realm, 10.16.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Realm as a Cake Addin
#addin nuget:?package=Realm&version=10.16.0

// Install Realm as a Cake Tool
#tool nuget:?package=Realm&version=10.16.0

Realm is a mobile database: a replacement for SQLite

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net46 is compatible.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid is compatible. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios is compatible. 
Xamarin.Mac xamarinmac is compatible. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (39)

Showing the top 5 NuGet packages that depend on Realm:

Package Downloads
ppy.osu.Game

Package Description

Iridium360.Connect.Framework

This framework allows you to bind your Android or iOS device with i360RockSTAR tracker

ItEnterprise.Common.CoreStandard

ItEnterprise Common.CoreStandard for Xamarin Forms

Arc4u.Standard.Diagnostics.Serilog.Sinks.RealmDb

Arc4u Diagnostics Serilog Sink to RealmDB

ItEnterprise.WmsStandard

ItEnterprise WmsStandard for Xamarin Forms

GitHub repositories (5)

Showing the top 5 popular GitHub repositories that depend on Realm:

Repository Stars
ppy/osu
rhythm is just a *click* away!
realm/realm-dotnet
Realm is a mobile database: a replacement for SQLite & ORMs
sgermosen/xReader
XML, NEWS, RSS & Scrapping Reader maked in Xamarin, for educational purpose.
realm/realm-draw
The official Realm Draw app used in promotional videos
dsa28s/windows-hangul-clock
Hangul Clock for Windows Desktop Widget
Version Downloads Last updated
12.0.0 2,483 4/17/2024
11.7.0 51,197 2/5/2024
11.6.1 60,597 11/17/2023
11.6.0 12,496 11/4/2023
11.5.0 165,581 9/16/2023
11.4.0 24,134 8/16/2023
11.3.0 32,130 7/26/2023
11.2.0 14,882 7/8/2023
11.1.2 96,918 6/20/2023
11.1.1 5,756 6/19/2023
11.1.0 2,609 6/17/2023
11.0.0 36,857 5/8/2023
10.21.1 33,052 4/21/2023
10.21.0 22,366 3/24/2023
10.20.0 86,264 2/10/2023
10.19.0 32,303 1/6/2023
10.18.0 124,501 11/2/2022
10.17.0 85,775 10/6/2022
10.16.0 12,608 10/3/2022
10.15.1 104,334 8/8/2022
10.15.0 5,526 8/5/2022
10.14.0 171,812 6/2/2022
10.13.0 26,929 5/18/2022
10.12.0 18,075 5/5/2022
10.11.2 34,675 4/21/2022
10.11.1 20,642 3/31/2022
10.11.0 5,414 3/28/2022
10.10.0 94,536 2/28/2022
10.9.0 73,363 1/21/2022
10.8.0 37,669 1/17/2022
10.7.1 101,806 11/20/2021
10.7.0 7,111 11/10/2021
10.6.0 158,039 9/30/2021
10.5.1 17,996 9/22/2021
10.5.0 30,526 9/9/2021
10.4.1 3,681 9/3/2021
10.4.0 11,259 8/31/2021
10.3.0 137,297 7/7/2021
10.2.1 26,676 7/1/2021
10.2.0 26,536 6/15/2021
10.2.0-beta.2 761 5/5/2021
10.2.0-beta.1 350 4/12/2021
10.1.4 19,059 5/12/2021
10.1.3 20,295 4/29/2021
10.1.2 29,374 3/19/2021
10.1.1 22,096 2/25/2021
10.1.0 13,130 2/9/2021
10.0.1 6,834 2/2/2021
10.0.0-beta.6 430 1/26/2021
10.0.0-beta.5 636 1/19/2021
10.0.0-beta.3 1,151 12/10/2020
10.0.0-beta.2 1,464 11/4/2020
10.0.0-beta.1 727 10/16/2020
10.0.0-alpha.43 360 10/9/2020
10.0.0-alpha.34 470 10/4/2020
5.1.3 24,878 2/10/2021
5.1.2 83,553 10/20/2020
5.1.1 27,533 10/2/2020
5.1.0 6,607 9/30/2020
5.0.1 10,720 9/9/2020
4.3.0 270,637 2/5/2020
4.2.0 69,653 10/8/2019
4.1.0 86,397 8/6/2019
4.0.1 20,012 6/27/2019
4.0.0 6,256 6/14/2019
3.4.0 101,117 1/9/2019
3.3.0 26,280 11/8/2018
3.2.1 43,997 9/27/2018
3.2.0 15,192 9/4/2018
3.1.0 32,505 7/4/2018
3.0.0 108,373 4/16/2018
2.2.0 12,699 3/22/2018
2.1.0 54,577 11/13/2017
2.0.0 18,270 10/17/2017
2.0.0-rc1 2,572 10/3/2017
1.6.0 35,392 8/15/2017
1.5.0 17,975 6/20/2017
1.4.0 14,880 5/19/2017
1.3.0 3,722 5/16/2017
1.2.1 7,937 5/1/2017
1.2.0 5,946 4/4/2017
1.1.1 7,497 3/15/2017
1.1.0 3,650 3/3/2017
1.0.4 4,880 2/21/2017
1.0.3 17,054 2/14/2017
0.82.1 18,468 1/27/2017
0.82.0 3,338 1/23/2017
0.81.0 5,428 12/15/2016
0.80.0 11,534 10/27/2016
0.78.1 20,583 9/15/2016
0.78.0 2,744 9/11/2016
0.77.2 5,616 8/11/2016
0.77.1 3,176 7/28/2016
0.76.1 6,070 6/15/2016
0.76.0 3,386 6/9/2016
0.75.0 3,216 6/3/2016
0.74.1 5,789 5/10/2016

## 10.16.0 (2022-10-03)

### Enhancements
* Introduced `AsymmetricObject` intended for write-heavy workloads, where high performance is generally important. This new object:
 1. syncs data unidirectionaly, from the clients to the server
 1. can't be queried, deleted, or modified once added to the Realm
 1. is only usable with flexible sync
 1. can't be the receiveing end of any type of relationship
 1. can contain `EmbeddedObject`s but cannot link to `RealmObject` or `AsymmetricObject`.

 In the same write transaction, it is legal to add `AsymmetricObject`s and `RealmObject`s
 ```cs
 class Measurement : AsymmetricObject
 {
     [PrimaryKey, MapTo("_id")]
     public Guid Id { get; private set; } = Guid.NewGuid();

     public double Value { get; set; }

     public DataTimeOffset Timestamp { get; private set; } = DateTimeOffset.UtcNow;
 }

 class Person : RealmObject
 {
     //............
 }

 //.....

 var measurement = new Measurement
 {
   Value = 9.876
 };

 realm.Write(() =>
 {
     realm.Add(measurement);

     realm.Add(new Person());
 });

 _ = asymmetricObject.Value;   // runtime error
 _ = realm.All<Measurement>(); // compile time error
 ```
* Added two client reset handlers, `RecoverUnsyncedChangesHandler` and `RecoverOrDiscardUnsyncedChangesHandler`, that try to automatically merge the unsynced local changes with the remote ones in the event of a client reset. Specifically with `RecoverOrDiscardUnsyncedChangesHandler`, you can fallback to the discard local strategy in case the automatic merge can't be performed as per your server's rules. These new two stragegies simplify even more the handling of client reset events when compared to `DiscardUnsyncedChangesHandler`.`RecoverOrDiscardUnsyncedChangesHandler` is going to be the default from now on. An example is as follows
* Added two client reset handlers, `RecoverUnsyncedChangesHandler` and `RecoverOrDiscardUnsyncedChangesHandler`, that try to automatically merge the unsynced local changes with the remote ones in the event of a client reset. Specifically with `RecoverOrDiscardUnsyncedChangesHandler`, you can fallback to the discard unsynced strategy in case the automatic merge can't be performed as per your server's rules. These new two stragegies simplify even more the handling of client reset events when compared to `DiscardUnsyncedChangesHandler`.`RecoverOrDiscardUnsyncedChangesHandler` is going to be the default from now on. More info on the aforementioned strategies can be found in our [docs page](https://www.mongodb.com/docs/realm/sdk/dotnet/advanced-guides/client-reset/). An example usage of one of the new handler is as follows:
 ```cs
 var conf = new PartitionSyncConfiguration(partition, user)
 {
   ClientResetHandler = new RecoverOrDiscardUnsyncedChangesHandler
   {
     // As always, the following callbacks are optional

     OnBeforeReset = (beforeFrozen) =>
     {
       // executed right before a client reset is about to happen
     },
     OnAfterRecovery = (beforeFrozen, after) =>
     {
       // executed right after an automatic recovery from a client reset has completed
     },
     OnAfterDiscard = (beforeFrozen, after) =>
     {
       // executed after an automatic recovery from a client reset has failed but the DiscardUnsyncedChanges fallback has completed
     },
     ManualResetFallback = (session, err) =>
     {
       // handle the reset manually
     }
   }
 };
 ```
 (PR [#2745](https://github.com/realm/realm-dotnet/issues/2745))
* Introducing string query support for constant list expressions such as `realm.All<Car>().Filter("Color IN {'blue', 'orange'}")`. This also includes general query support for list vs list matching such as `realm.All<Car>().Filter("NONE Features IN {'ABS', 'Seat Heating'}")`. (Core upgrade)
* Improve performance when a new Realm file connects to the server for the first time, especially when significant amounts of data has been written while offline. (Core upgrade)
* Shift more of the work done on the sync worker thread out of the write transaction used to apply server changes, reducing how long it blocks other threads from writing. (Core upgrade)
* Improve the performance of the sync changeset parser, which speeds up applying changesets from the server. (Core upgrade)

### Fixed
* Added a more meaningful error message whenever a project doesn't have `[TargetFramework]` defined. (Issue [#2843](https://github.com/realm/realm-dotnet/issues/2843))
* Opening a read-only Realm for the first time with a `SyncConfiguration` did not set the schema version, which could lead to `m_schema_version != ObjectStore::NotVersioned` assertion failures. (Core upgrade)
* Upload completion callbacks (i.e. `Session.WaitForUploadAsync`) may have called before the download message that completed them was fully integrated. (Core upgrade)
* Fixed an exception "fcntl() with F_BARRIERFSYNC failed: Inappropriate ioctl for device" when running with MacOS on an exFAT drive. (Core upgrade)
* Syncing of a Decimal128 with big significand could result in a crash. (Core upgrade)
* `Realm.Refresh()` did not actually advance to the latest version in some cases. If there was a version newer than the current version which did not require blocking it would advance to that instead, contrary to the documented behavior. (Core upgrade)
* Several issues around notifications were fixed. (Core upgrade)
 * Fix a data race on RealmCoordinator::m_sync_session which could occur if multiple threads performed the initial open of a Realm at once.
 * If a SyncSession outlived the parent Realm and then was adopted by a new Realm for the same file, other processes would not get notified for sync writes on that file.
 * Fix one cause of QoS inversion warnings when performing writes on the main thread on Apple platforms. Waiting for async notifications to be ready is now done in a QoS-aware ways.
* If you set a subscription on a link in flexible sync, the server would not know how to handle it ([#5409](https://github.com/realm/realm-core/issues/5409), since v11.6.1)
* If a case insensitive query searched for a string including an 4-byte UTF8 character, the program would crash. (Core upgrade)
* Added validation to prevent adding a removed object using Realm.Add. (Issue [#3020](https://github.com/realm/realm-dotnet/issues/3020))

### Compatibility
* Realm Studio: 12.0.0 or later.

### Internal
* Using Core 12.7.0.