オブジェクト モデルとスキーマ - .NET SDK
オブジェクトタイプとスキーマ
Realm アプリケーションは、1 つ以上のプリミティブ データ型またはその他の Realm オブジェクトを含むプロパティと値のペアで構成されるオブジェクトとしてデータをモデル化します。 Realm オブジェクトは基本的に通常のオブジェクトと同じですが、 RealmObjectまたは埋め込みオブジェクトから継承され、リアルタイム更新データビューやリアクティブな変更イベント ハンドラーなどの追加機能が含まれています。
すべての Realm オブジェクトには、オブジェクトのクラスを参照するオブジェクトタイプがあります。 同じ型のオブジェクトは、それらのオブジェクトのプロパティと関係を定義するオブジェクト スキーマを共有します。
Schemas
C# では通常、C# クラス宣言を使用してオブジェクト スキーマを定義します。 Realm が初期化されると、ロードされたすべてのアセンブルで定義されている Realm オブジェクトが検出され、それに応じてスキーマが生成されます。 これは、スキーマを定義する最も単純な方法であり、通常エラーが発生する頻度が最も少なくなります。 ただし、このアプローチにはロードされたすべての Realm オブジェクトが含まれ、 クラスのサブセット や Realm オブジェクト スキーマをカスタマイズする目的でのみ使用する場合もあります。 そのためには、プログラムによって スキーマを定義 することができます。
注意
.NET はクラスを参照するまで組み立てをロードしないため、ある組み立てでオブジェクトモデルを定義し、別の組み立てで Realm をインスタンス化する場合は、初期化する前にオブジェクトモデルを含む組み立て内で必ずオブジェクトモデルを含むメソッドを呼び出してください。 そうしないと、Realm は最初にロードするときにオブジェクトを検出しません。
Realm オブジェクトの操作
次のコード ブロックは、犬を記述するオブジェクト スキーマを示しています。 すべてのドキュメント オブジェクトには Name
を含める必要があり、オプションでドキュメントのAge
、 Breed
、およびドキュメントのOwners
を表す人物のリストを含めることができます。
public partial class Dog : IRealmObject { [ ] [ ] public ObjectId Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Breed { get; set; } public IList<Person> Owners { get; } } public partial class Person : IRealmObject { [ ] [ ] public ObjectId Id { get; set; } public string Name { get; set; } // etc... /* To add items to the IList<T>: var dog = new Dog(); var caleb = new Person { Name = "Caleb" }; dog.Owners.Add(caleb); */ }
注意
オブジェクト内のオブジェクトのコレクションを定義するには、ゲッターのみを含むIList<T>
を使用します。 プロパティが初めてアクセスされたときに Realm によってコレクション インスタンスが生成されるため、コンストラクター内で初期化する必要はありません。