对象模型和模式 - .NET SDK
Atlas Device SDK 已弃用。 有关详细信息,请参阅弃用页面。
对象类型和模式
Realm应用程序将数据建模为由属性/值对组成的对象,每个属性/值对包含一个或多个基元数据类型或其他Realm对象。 Realm对象本质上与常规对象相同,但它们继承自 RealmObject或EmbeddedObject ,并包含实时更新数据视图和响应式变更事件处理程序等附加功能。
每个 Realm 对象都有一个引用该对象类的对象类型。同一类型的对象共享一个对象模式,该模式定义了这些对象的属性和关系。
Schemas
在 C# 中,通常使用 C# 类声明来定义对象模式。当 Realm 初始化时,它会发现所有已加载的程序集中定义的 Realm 对象,并相应地生成模式。这是定义模式的最简单方法,通常最不容易出错。但是,这种方法包括所有加载的 Realm 对象。在某些情况下,您只想使用类的子集或自定义 Realm 对象模式。为此,您可以通过编程定义模式。
注意
.NET 在引用程序集中的类之前不会加载程序集,因此,如果您在一个程序集中定义对象模型并在另一个程序集中实例化 Realm,请务必在初始化之前调用包含对象模型的程序集中的方法。 否则,Realm 在第一次加载时将不会发现对象。
处理 Realm 对象
以下代码块显示了描述 Dog 的对象模式。每个 Dog 对象都必须包含一个 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); */ }
注意
要定义对象内的对象集合,请使用仅带有 getter 的IList<T>
。 您不需要在构造函数中初始化,因为 Realm 将在第一次访问该属性时生成一个集合实例。