클래스 마이그레이션
이 클래스는 데이터베이스를 한 버전에서 다른 버전으로 마이그레이션할 때 제공됩니다. 여기에는 OldRealm 및 NewRealm 이라는 두 가지 속성이 포함되어 있습니다. NewRealm 이 최신 상태인지 확인해야 합니다. 여기에는 제공한 구성에 해당하는 모델이 포함됩니다. OldRealm 에서 읽고 동적 API를 사용하여 클래스에서 제거된 속성에 액세스할 수 있습니다.
네임스페이스: Realms
어셈블리: Realm.exe
구문
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 | 마이그레이션 후 해당 객체 또는 객체가 새 영역에 더 이상 존재하지 않는 경우 |
유형 매개변수
이름 | 설명 |
---|---|
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 | 제거해야 하는 유형입니다. |
반환
유형 | 설명 |
---|---|
부울 |
|
비고
제거된 유형은 마이그레이션 블록의 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");
}
};