Realm 10.6.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Realm --version 10.6.0
NuGet\Install-Package Realm -Version 10.6.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.6.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Realm --version 10.6.0
#r "nuget: Realm, 10.6.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.6.0

// Install Realm as a Cake Tool
#tool nuget:?package=Realm&version=10.6.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 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. 
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.6.0 (2021-09-30)

### Enhancements
* Added two extension methods on `ISet` to get an `IQueryable` collection wrapping the set:
 * `set.AsRealmQueryable()` allows you to get a `IQueryable<T>` from `ISet<T>` that can be then treated as a regular queryable collection and filtered/ordered with LINQ or `Filter(string)`.
 * `set.Filter(query, arguments)` will filter the set and return the filtered collection. It is roughly equivalent to `set.AsRealmQueryable().Filter(query, arguments)`.

 The resulting queryable collection will behave identically to the results obtained by calling `realm.All<T>()`, i.e. it will emit notifications when it changes and automatically update itself. (Issue [#2555](https://github.com/realm/realm-dotnet/issues/2555))
* Added two new methods on `Migration` (Issue [#2543](https://github.com/realm/realm-dotnet/issues/2543)):
 * `RemoveType(typeName)` allows to completely remove a type and its schema from a realm during a migration.
 * `RenameProperty(typeName, oldPropertyName, newPropertyName)` allows to rename a property during a migration.
* A Realm Schema can now be constructed at runtime as opposed to generated automatically from the model classes. The automatic generation continues to work and should cover the needs of the vast majority of Realm users. Manually constructing the schema may be required when the shape of the objects depends on some information only known at runtime or in very rare cases where it may provide performance benefits by representing a collection of known size as properties on the class. (Issue [#824](https://github.com/realm/realm-dotnet/issues/824))
 * `RealmConfiguration.ObjectClasses` has now been deprecated in favor of `RealmConfiguration.Schema`. `RealmSchema` has an implicit conversion operator from `Type[]` so code that previously looked like `ObjectClasses = new[] { typeof(Foo), typeof(Bar) }` can be trivially updated to `Schema = new[] { typeof(Foo), typeof(Bar) }`.
 * `Property` has been converted to a read-only struct by removing the setters from its properties. Those didn't do anything previously, so we don't expect anyone was using them.
 * Added several factory methods on `Property` to simplify declaration of Realm properties by being explicit about the range of valid options - e.g. `Property.FromType<int>("IntProperty")` or `Property.Object("MyPersonProp", "Person")`. The constructor of `Property` is now public to support advanced scenarios, but we recommend using the factory methods.
 * Made `ObjectSchema.Builder` public and streamlined its API. It allows you to construct a mutable representation of the schema of a single object and add/remove properties to it. You can either get an empty builder or you can see it with the information from an existing model class (i.e. inheriting from `RealmObject` or `EmbeddedObject`).
 * Made `RealmSchema.Builder` public and streamlined its API. It allows you to construct a mutable representation of the schema of an entire Realm and add/remove object schemas to it.
 * A simple example for how to use the new API would look like:
 ```csharp
 public class Person : RealmObject
 {
   public string Name { get; set; }
   public Address Address { get; set; }
 }

 // Declare schema from existing model classes
 var config = new RealmConfiguration
 {
   Schema = new[] { typeof(Person), typeof(Address) }
 };

 // Manually construct a schema - we don't need to call .Build() on the builders
 // because we have implicit conversion operators defined that will call it for us.
 // Explicitly calling .Build() is also perfectly fine, if a little more verbose.
 var config = new RealmConfiguration
 {
   Schema = new RealmSchema.Builder
   {
     new ObjectSchema.Builder("MyClass", isEmbedded: false)
     {
       Property.FromType<int>("Id", isPrimaryKey: true),
       Property.PrimitiveDictionary("Tags", RealmValueType.String)
     },
     new ObjectSchema.Builder("EmbeddedClass", isEmbedded: true)
     {
       Property.Primitive("DateProp", RealmValueType.Date, isNullable: true)
     }
   }
 };

 // Enhance an existing model with new properties that will be accessible via
 // the dynamic API.
 var personSchema = new ObjectSchema.Builder(typeof(Person))
 {
   Property.FromType<string>("NewStringProp")
 };

 var config = new RealmConfiguration
 {
   Schema = new RealmSchema.Builder
   {
     personSchema,
     new ObjectSchema.Builder(typeof(Address))
   }
 };

 // Regular Person properties can be accessed as usual while runtime defined ones
 // need to go through the dynamic API.
 var person = realm.All<Person>().First();
 var name = person.Name;
 var stringPropValue = person.DynamicApi.Get<string>("NewStringProp");
 ```
* Fixed an issue that would result in SIGABORT on macOS/Linux when opening a Realm in dynamic mode (i.e. read the schema from disk) and the schema contains an object with no properties. (Issue [#1978](https://github.com/realm/realm-dotnet/issues/1978))

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

### Internal
* Using Core 11.4.1.
* Moved perf tests to run on a self-hosted runner. (PR [#2638](https://github.com/realm/realm-dotnet/pull/2638))