スキーマの手動定義 - .NET SDK
項目一覧
Atlas Device SDK は非推奨です。 詳細については、 の廃止ページを参照してください。
Realm は Realm オブジェクトを処理する際、クラスのプロパティに基づいて各クラスのスキーマを生成します。 ただし、スキーマを手動で定義したい場合もあります。.NET SDK はそのためのメカニズムを提供します。
重要
継承
すべての Realm オブジェクトは、 IRealmObject 、 IEMededObject 、またはIAmetricObjectインターフェースから継承し、 partial
クラスを宣言する必要があります。
10.18.0より前のバージョンの .NET SDK では、 オブジェクトは、 RealmObject 、埋め込みオブジェクト 、またはAmetricObject基本クラスから派生します。 Realm モデル定義へのこのアプローチは引き続きサポートされていますが、 null 可能性注釈などの新機能は含まれていません。 将来の SDK リリースでは、基本クラスは非推奨になる予定です。 作成する新しいクラスには インターフェースを使用し、既存のクラスの移行を検討する必要があります。
スキーマ プロパティの使用
RealmConfigurationBase オブジェクトの schema プロパティを使用して、 スキーマ の定義方法を制御します。次のコード例では、これを行うための 3 つの方法を、簡単な方法から最も複雑な方法まで、自動構成、手動構成、および両方の方法の組み合わせです。
// By default, all loaded RealmObject classes are included. // Use the RealmConfiguration when you want to // construct a schema for only specific C# classes: var config = new RealmConfiguration { Schema = new[] { typeof(ClassA), typeof(ClassB) } }; // More advanced: construct the schema manually var manualConfig = new RealmConfiguration { Schema = new RealmSchema.Builder { new Builder("ClassA", ObjectType.EmbeddedObject) { Property.Primitive("Id", RealmValueType.Guid, isPrimaryKey: true), Property.Primitive("LastName", RealmValueType.String, isNullable: true, indexType: IndexType.General) } } }; // Most advanced: mix and match var mixedSchema = new ObjectSchema.Builder(typeof(ClassA)); mixedSchema.Add(Property.FromType<int>("ThisIsNotInTheCSharpClass")); // `mixedSchema` now has all of the properties of the ClassA class // and an extra integer property called "ThisIsNotInTheCSharpClass" var mixedConfig = new RealmConfiguration { Schema = new[] { mixedSchema.Build() } };