类迁移
当您将数据库从一个版本迁移到另一版本时,将为您提供此类。 它包含两个属性: OldRealm和NewRealm 。 您应确保NewRealm是最新的。 它将包含与您提供的配置相对应的模型。 您可以使用动态 API 从OldRealm中读取并访问已从类中删除的属性。
命名空间: Realms
程序集:Realm.dll
语法
public class Migration
属性
| 编辑本页 查看源代码NewRealm
获取您应修改并确保为最新状态的Realm 。
声明
public Realm NewRealm { get; }
属性值
类型 | 说明 |
---|---|
Realm | 迁移后将保存的Realm 。 |
OldRealm
获取迁移前的Realm 。 使用动态 API 来访问它。
声明
public Realm OldRealm { get; }
属性值
类型 | 说明 |
---|---|
Realm | 迁移前的Realm 。 |
方法
| 编辑本页 查看源代码FindInNewRealm<T>(IRealmObject)
在 NewRealm 中查找从 OldRealm 获取的对象。
声明
public T? FindInNewRealm<T>(IRealmObject obj) where T : IRealmObject
参数
类型 | 名称 | 说明 |
---|---|---|
IRealmObject | obj | 从旧域获取的对象。 |
返回:
类型 | 说明 |
---|---|
t | 迁移后的相应对象,如果该对象在新 Realm 中不再存在,则为 |
类型参数
名称 | 说明 |
---|---|
t | 新域中对象的类型。 |
示例
foreach (var oldPerson in migration.OldRealm.DynamicApi.All("Person"))
{
var newPerson = migration.FindInNewRealm<Person>(oldPerson)
newPerson.Name = $"{oldPerson.DynamicApi.Get<string>("FirstName")} {oldPerson.DynamicApi.Get<string>("LastName")}";
}
|
编辑本页
查看源代码
RemoveType(string)
在迁移期间删除类型。 与该类型及其模式关联的所有数据都将从Realm中删除。
声明
public bool RemoveType(string typeName)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | typeName | 需要删除的类型。 |
返回:
类型 | 说明 |
---|---|
bool |
|
备注
仍可从迁移区块中的OldRealm访问已删除的类型。 该类型不得出现在新模式中。 如果需要删除表的内容,可以在 NewRealm 上使用 RemoveAll<T> () 。
RenameProperty(string, string, string)
在迁移期间重命名属性。
声明
public void RenameProperty(string typeName, string oldPropertyName, string newPropertyName)
参数
类型 | 名称 | 说明 |
---|---|---|
字符串 | typeName | 需要执行属性重命名的类型。 |
字符串 | oldPropertyName | 属性的先前名称。 |
字符串 | newPropertyName | 属性的新名称。 |
示例
// Model in the old schema
class Dog : RealmObject
{
public string DogName { get; set; }
}
// Model in the new schema
class Dog : RealmObject
{
public string Name { get; set; }
}
//After the migration Dog.Name will contain the same values as Dog.DogName from the old realm, without the need to copy them explicitly
var config = new RealmConfiguration
{
SchemaVersion = 1,
MigrationCallback = (migration, oldSchemaVersion) =>
{
migration.RenameProperty("Dog", "DogName", "Name");
}
};