Realm 10.10.0
See the version list below for details.
dotnet add package Realm --version 10.10.0
NuGet\Install-Package Realm -Version 10.10.0
<PackageReference Include="Realm" Version="10.10.0" />
paket add Realm --version 10.10.0
#r "nuget: Realm, 10.10.0"
// Install Realm as a Cake Addin #addin nuget:?package=Realm&version=10.10.0 // Install Realm as a Cake Tool #tool nuget:?package=Realm&version=10.10.0
Realm is a mobile database: a replacement for SQLite
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 | 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 was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Fody (>= 6.6.0)
- Microsoft.CSharp (>= 4.5.0)
- MongoDB.Bson (>= 2.11.3)
- Realm.Fody (>= 10.10.0)
- Remotion.Linq (>= 2.2.0)
- System.Buffers (>= 4.4.0)
- System.Dynamic.Runtime (>= 4.3.0)
- System.Runtime.CompilerServices.Unsafe (>= 4.5.3)
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
Package Description |
|
ItEnterprise.WmsStandard
ItEnterprise WmsStandard for Xamarin Forms |
GitHub repositories (7)
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.
|
|
Piotrekol/CollectionManager
An extensive tool for creating, editing, and exporting of osu! collections.
|
|
realm/realm-draw
The official Realm Draw app used in promotional videos
|
Version | Downloads | Last updated | |
---|---|---|---|
20.0.0 | 13,843 | 9/9/2024 | |
12.4.1 | 7,868 | 9/16/2024 | |
12.4.0 | 16,214 | 8/25/2024 | |
12.3.0 | 33,357 | 7/20/2024 | |
12.2.0 | 49,566 | 5/22/2024 | |
12.1.0 | 12,469 | 5/1/2024 | |
12.0.0 | 12,605 | 4/17/2024 | |
11.7.0 | 91,714 | 2/5/2024 | |
11.6.1 | 89,093 | 11/17/2023 | |
11.6.0 | 22,636 | 11/4/2023 | |
11.5.0 | 274,700 | 9/16/2023 | |
11.4.0 | 31,608 | 8/16/2023 | |
11.3.0 | 46,804 | 7/26/2023 | |
11.2.0 | 16,969 | 7/8/2023 | |
11.1.2 | 109,807 | 6/20/2023 | |
11.1.1 | 7,454 | 6/19/2023 | |
11.1.0 | 2,737 | 6/17/2023 | |
11.0.0 | 47,157 | 5/8/2023 | |
10.21.1 | 44,194 | 4/21/2023 | |
10.21.0 | 24,596 | 3/24/2023 | |
10.20.0 | 90,849 | 2/10/2023 | |
10.19.0 | 35,806 | 1/6/2023 | |
10.18.0 | 137,962 | 11/2/2022 | |
10.17.0 | 93,845 | 10/6/2022 | |
10.16.0 | 12,908 | 10/3/2022 | |
10.15.1 | 110,708 | 8/8/2022 | |
10.15.0 | 5,719 | 8/5/2022 | |
10.14.0 | 187,878 | 6/2/2022 | |
10.13.0 | 28,398 | 5/18/2022 | |
10.12.0 | 18,407 | 5/5/2022 | |
10.11.2 | 35,121 | 4/21/2022 | |
10.11.1 | 21,819 | 3/31/2022 | |
10.11.0 | 5,571 | 3/28/2022 | |
10.10.0 | 96,248 | 2/28/2022 | |
10.9.0 | 81,486 | 1/21/2022 | |
10.8.0 | 38,416 | 1/17/2022 | |
10.7.1 | 106,577 | 11/20/2021 | |
10.7.0 | 7,235 | 11/10/2021 | |
10.6.0 | 169,184 | 9/30/2021 | |
10.5.1 | 18,445 | 9/22/2021 | |
10.5.0 | 31,058 | 9/9/2021 | |
10.4.1 | 3,813 | 9/3/2021 | |
10.4.0 | 11,384 | 8/31/2021 | |
10.3.0 | 140,186 | 7/7/2021 | |
10.2.1 | 27,139 | 7/1/2021 | |
10.2.0 | 28,617 | 6/15/2021 | |
10.2.0-beta.2 | 786 | 5/5/2021 | |
10.2.0-beta.1 | 363 | 4/12/2021 | |
10.1.4 | 19,982 | 5/12/2021 | |
10.1.3 | 23,339 | 4/29/2021 | |
10.1.2 | 29,705 | 3/19/2021 | |
10.1.1 | 22,716 | 2/25/2021 | |
10.1.0 | 15,772 | 2/9/2021 | |
10.0.1 | 7,749 | 2/2/2021 | |
10.0.0-beta.6 | 445 | 1/26/2021 | |
10.0.0-beta.5 | 653 | 1/19/2021 | |
10.0.0-beta.3 | 1,167 | 12/10/2020 | |
10.0.0-beta.2 | 1,488 | 11/4/2020 | |
10.0.0-beta.1 | 747 | 10/16/2020 | |
10.0.0-alpha.43 | 374 | 10/9/2020 | |
10.0.0-alpha.34 | 484 | 10/4/2020 | |
5.1.3 | 26,533 | 2/10/2021 | |
5.1.2 | 84,557 | 10/20/2020 | |
5.1.1 | 28,014 | 10/2/2020 | |
5.1.0 | 7,580 | 9/30/2020 | |
5.0.1 | 10,860 | 9/9/2020 | |
4.3.0 | 278,482 | 2/5/2020 | |
4.2.0 | 70,401 | 10/8/2019 | |
4.1.0 | 87,767 | 8/6/2019 | |
4.0.1 | 20,425 | 6/27/2019 | |
4.0.0 | 6,366 | 6/14/2019 | |
3.4.0 | 104,085 | 1/9/2019 | |
3.3.0 | 26,487 | 11/8/2018 | |
3.2.1 | 49,270 | 9/27/2018 | |
3.2.0 | 17,139 | 9/4/2018 | |
3.1.0 | 33,286 | 7/4/2018 | |
3.0.0 | 110,286 | 4/16/2018 | |
2.2.0 | 14,828 | 3/22/2018 | |
2.1.0 | 55,283 | 11/13/2017 | |
2.0.0 | 18,436 | 10/17/2017 | |
2.0.0-rc1 | 2,634 | 10/3/2017 | |
1.6.0 | 35,612 | 8/15/2017 | |
1.5.0 | 18,058 | 6/20/2017 | |
1.4.0 | 14,977 | 5/19/2017 | |
1.3.0 | 3,772 | 5/16/2017 | |
1.2.1 | 8,014 | 5/1/2017 | |
1.2.0 | 6,033 | 4/4/2017 | |
1.1.1 | 7,554 | 3/15/2017 | |
1.1.0 | 3,730 | 3/3/2017 | |
1.0.4 | 4,957 | 2/21/2017 | |
1.0.3 | 17,118 | 2/14/2017 | |
0.82.1 | 18,527 | 1/27/2017 | |
0.82.0 | 3,445 | 1/23/2017 | |
0.81.0 | 5,543 | 12/15/2016 | |
0.80.0 | 11,660 | 10/27/2016 | |
0.78.1 | 20,645 | 9/15/2016 | |
0.78.0 | 2,787 | 9/11/2016 | |
0.77.2 | 5,660 | 8/11/2016 | |
0.77.1 | 3,220 | 7/28/2016 | |
0.76.1 | 6,112 | 6/15/2016 | |
0.76.0 | 3,472 | 6/9/2016 | |
0.75.0 | 3,288 | 6/3/2016 | |
0.74.1 | 5,957 | 5/10/2016 |
## 10.10.0 (2022-02-28)
### Guid representation issue
This release fixes a major bug in the way Guid values are stored in the database. It provides an automatic migration for local (non-synchronized) databases, but extra caution is needed when upgrading an app that uses Sync.
#### **Context**
A Guid is represented by 4 components - `int`, `short`, `short`, and a `byte[8]`. Microsoft's Guids diverge from the UUID spec in that they encode the first three components with the endianness of the system (little-endian for all modern CPUs), while UUIDs encode their components as big-endian. The end result is that the same bytes have a different string representations when interpreted as a `Guid` by the .NET SDK vs when interpreted as a `UUID` by the Realm Database - e.g. `f2952191-a847-41c3-8362-497f92cb7d24` vs `912195f2-47a8-c341-8362-497f92cb7d24` (note the swapping of bytes in the first three components). You can see the issue by opening a database created by the .NET SDK in Realm Studio and inspecting the values for Guid properties.
#### **Fix**
The fix we're providing is to adjust the behavior of the .NET SDK to read/write Guids to the database with big-endian representation. This means that the SDK and the database will consistently display the same values. This has some implications which are described in the Local- and Synchronized Realms sections.
#### **Local Realms**
For local Realms, we're executing a one-time migration the first time the Realm is opened with the new SDK. During this migration, we'll update all Guid fields to big-endian format. This means that their string representation will remain the same, but the value in the database will change to match it. This means that the upgrade process should be seamless, but if you decide to downgrade to an older version of the SDK, you'll see the byte order get flipped. The migration will not execute multiple times, even if you downgrade.
#### **Synchronized Realms**
There's no client migration provided for synchronized Realms. This is because the distributed nature of the system would mean that there will inevitably be a period of inconsistent state. Instead, the values of the `Guid` properties are read as they're already stored in the database, meaning the string representation will be flipped compared to previous versions of the SDK but it will now match the representation in Atlas/Compass/Realm Studio. There are three general groups your app will fall under:
* If you don't care about the string values of Guid properties on the client, then you don't need to do anything. The values will still be unique and valid Guids.
* If you do use the string guid values from the client app - e.g. to correlate user ids with a CMS, but have complete control over your client devices - e.g. because this an internal company app, then it's advised that you execute a one-time migration of the data in Atlas and force all users to upgrade to the latest version of the app.
* If you can't force all users to update at the same time, you can do a live migration by adding an extra property for each Guid property that you have and write a trigger function that will migrate the data between the two. The old version of the app will write to the original property, while the new version will write to the new property and the trigger will convert between the two.
If you are using sync and need to update to the latest version of the SDK but are not ready to migrate your data yet, see the `Opting out` section.
#### **Opting out**
If for some reason, you want to opt out of the fixed behavior, you can temporarily opt out of it by setting the `Realm.UseLegacyGuidRepresentation` property to `true`. This is not recommended but can be used when you need more time to test out the migration while still getting bugfixes and other improvements. Setting it to `true` does two things:
1. It brings back the pre-10.10.0 behavior of reading/writing Guid values with little-endian representation.
1. It disables the migration code for local Realms. Note that it will not revert the migration if you already opened the Realm file when `UseLegacyGuidRepresentation` was set to `false`.
### Enhancements
* Lifted a limitation that would prevent you from changing the primary key of objects during a migration. It is now possible to do it with both the dynamic and the strongly-typed API:
```csharp
var config = new RealmConfiguration
{
SchemaVersion = 5,
MigrationCallback = (migration, oldVersion) =>
{
// Increment the primary key value of all Foos
foreach (var obj in migration.NewRealm.All<Foo>())
{
obj.Id = obj.Id + 1000;
}
}
}
```
* [Unity] The Realm menu item in the Unity Editor was moved to `Tools/Realm` to reduce clutter and align with other 3rd party editor plugins. (Issue [#2807](https://github.com/realm/realm-dotnet/issues/2807))
### Fixed
* Fixed an issue with xUnit tests that would cause `System.Runtime.InteropServices.SEHException` to be thrown whenever Realm was accessed in a non-async test. (Issue [#1865](https://github.com/realm/realm-dotnet/issues/1865))
* Fixed a bug that would lead to unnecessary metadata allocation when freezing a realm. (Issue [#2789](https://github.com/realm/realm-dotnet/issues/2789))
* Fixed an issue that would cause Realm-managed objects (e.g. `RealmObject`, list, results, and so on) allocated during a migration block to keep the Realm open until they are garbage collected. This had subtle implications, such as being unable to delete the Realm shortly after a migration or being unable to open the Realm with a different configuration. (PR [#2795](https://github.com/realm/realm-dotnet/pull/2795))
* Fixed an issue that prevented Unity3D's IL2CPP compiler to correctly process one of Realm's dependencies. (Issue [#2666](https://github.com/realm/realm-dotnet/issues/2666))
* Fixed the osx runtime path in the Realm NuGet package to also apply to Apple Silicon (universal) architectures (Issue [#2732](https://github.com/realm/realm-dotnet/issues/2732))
### Compatibility
* Realm Studio: 11.0.0 or later.
### Internal
* Using Core 11.8.0