클래스 Realm
Realm 인스턴스(Realm이라고도 함)는 Realm 데이터베이스를 나타냅니다.
경고: 동결되지 않은 Realm 인스턴스는 스레드로부터 안전하지 않으며 스레드 간에 공유할 수 없습니다. Realm과 상호 작용하려는 각 스레드에서 GetInstance(RealmConfigurationBase?) 를 호출해야 합니다.
구현
네임스페이스: Realms
어셈블리: Realm.exe
구문
public class Realm : IDisposable
속성
| 이 페이지 편집 소스 보기Config
이 Realm의 경로 및 기타 설정을 제어하는 RealmConfigurationBase 를 가져옵니다.
선언
public RealmConfigurationBase Config { get; }
속성 값
유형 | 설명 |
---|---|
RealmConfigurationBase | Realm의 구성입니다. |
DynamicApi
이 Realm 인스턴스에 대한 동적 API를 포함하는 객체를 가져옵니다.
선언
[Preserve]
public Realm.Dynamic DynamicApi { get; }
속성 값
유형 | 설명 |
---|---|
Realm.동적 | 이 Realm을 래핑하는 Realm.Dynamic 인스턴스입니다. |
IsClosed
Dispose() 를 통해 인스턴스가 닫혔는지 여부를 나타내는 값을 가져옵니다. true
인 경우 해당 인스턴스에서 메서드를 호출해서는 안 됩니다.
선언
public bool IsClosed { get; }
속성 값
유형 | 설명 |
---|---|
부울 |
|
IsFrozen
이 Realm이 동결되었는지 여부를 나타내는 값을 가져옵니다. 프로즌 Realm은 변경할 수 없으며 데이터베이스에 쓰기가 수행될 때 업데이트되지 않습니다. 라이브 Realm과 달리 동결 Realm은 스레드 전체에서 사용할 수 있습니다.
선언
public bool IsFrozen { get; }
속성 값
유형 | 설명 |
---|---|
부울 |
|
IsInTransaction
이 Realm과 연결된 활성 쓰기 트랜잭션(write transaction)이 있는지 여부를 나타내는 값을 가져옵니다.
선언
public bool IsInTransaction { get; }
속성 값
유형 | 설명 |
---|---|
부울 |
|
다음도 참조하세요.
| 이 페이지 편집 소스 보기스키마
이 Realm 에 저장할 수 있는 모든 유형을 설명하는 RealmSchema 인스턴스를 가져옵니다.
선언
public RealmSchema Schema { get; }
속성 값
유형 | 설명 |
---|---|
Realm 스키마 | Realm의 스키마입니다. |
구독
이 Realm 의 활성 구독을 나타내는 SubscriptionSet 를 가져옵니다.
선언
public SubscriptionSet Subscriptions { get; }
속성 값
유형 | 설명 |
---|---|
SubscriptionSet | 서버가 로컬 Realm 과 동기화할 객체를 결정하는 데 사용하는 쿼리 구독이 포함된 SubscriptionSet 입니다. FlexibleSyncConfiguration 을 사용하여 Realm을 생성하지 않은 경우 NotSupportedException 이 발생합니다. |
예외
유형 | 조건 |
---|---|
NotSupportedException | Realm이 FlexibleSyncConfiguration 으로 열리지 않은 경우 발생합니다. |
SyncSession
선언
public Session SyncSession { get; }
속성 값
유형 | 설명 |
---|---|
Session | Realm 인스턴스가 FlexibleSyncConfiguration 또는 PartitionSyncConfiguration 을 사용하여 생성된 경우 MongoDB Atlas와의 동기화를 담당하는 Session 입니다. 로컬 또는 인메모리 Realm인 경우 NotSupportedException 이 발생합니다. |
예외
유형 | 조건 |
---|---|
NotSupportedException | Realm이 FlexibleSyncConfiguration 또는 PartitionSyncConfiguration 으로 열리지 않은 경우 발생합니다. |
UseLegacyGuidRepresentation
데이터베이스에 GUId 값을 저장할 때 레거시 표현을 사용할지 여부를 나타내는 값을 가져오거나 설정합니다.
선언
[Obsolete("It is strongly advised to migrate to the new Guid representation as soon as possible to avoid data inconsistency.")]
public static bool UseLegacyGuidRepresentation { get; set; }
속성 값
유형 | 설명 |
---|---|
부울 |
비고
10.10.0 이전 버전에서 .NET SDK에는 아키텍처별 바이트 순서(대부분의 최신 CPU의 경우 리틀 엔디안)로 GUId 값을 저장하는 반면 데이터베이스 쿼리 엔진과 동기화는 항상 이를 빅데이터로 처리하는 버그가 있었습니다. 엔디안. 이는 SDK와 데이터베이스 간에 서로 다른 문자열 표현으로 나타납니다. '912195f2-47a8-c341-8362-497f92cb7d24' 대신 'f2952191-a847-41c3-8362-497f92cb7d24'(처음 3개의 구성 요소에서 바이트가 바뀐 것을 확인). 10.10.0부터는 빅 엔디안 표현이 기본 설정이며 로컬(비동기화) Realm에 대한 원활한 일회성 마이그레이션이 제공됩니다. Realm이 처음 열리면 GUId 값을 보유하는 모든 속성이 리틀 엔디안에서 빅 엔디안 형식으로 업데이트되며 .NET SDK는 해당 속성을 그대로 취급합니다. SDK에서 데이터를 읽거나 쓸 때는 눈에 띄는 변화가 없어야 하지만 Realm Studio 또는 다른 SDK에서 Realm 파일에 액세스할 때는 일관된 값을 볼 수 있습니다.
동기화된 Realms의 경우 데이터의 분산된 특성으로 인해 이러한 마이그레이션이 불가능합니다. 따라서 신뢰할 수 있는 경우 Atlas의 GUId 표현과 SDK 값이 일치하도록 업데이트되어야 한다고 가정합니다. 이는 SDK가 10.10.0 이전과 비교하여 기존 GUID 데이터의 다른 문자열 표현을 보고하기 시작한다는 것을 의미합니다. SDK에서 타사 시스템을 쿼리하는 경우 예기치 않은 결과가 나타날 수 있습니다. 기존 동작(SDK에서는 리틀 엔디안, Atlas에서는 빅 엔디안)을 보존하려면 이 값을 true
으로 설정하고 Realm 지원팀(https://support.mongodb.com)에 문의하세요. 를 클릭하여 데이터를 새 형식으로 마이그레이션하는 데 도움을 받을 수 있습니다.
방법
| 이 페이지 편집 소스 보기Add<T>(IEnumerable<T>)
이 Realm 에 독립형 AsymmetricObjects 컬렉션을 추가합니다.
선언
public void Add<T>(IEnumerable<T> objs) where T : IAsymmetricObject
매개변수
유형 | 이름 | 설명 |
---|---|---|
IEnumerable<T> | objs | 이 Realm 에 추가될 IAsymmetricObject 인스턴스의 컬렉션입니다. |
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IAsymmetricObject여야 할 뿐만 아니라 Fody 위버에 의해 처리되었으므로 영구 속성을 갖습니다. |
비고
컬렉션에 이 Realm 에서 이미 관리 중인 항목이 포함되어 있으면 해당 항목은 무시됩니다. 이 메서드는 객체를 제자리에서 수정하므로 실행이 끝난 후에는 컬렉션의 모든 항목이 관리됩니다. IAsymmetricObject 가 managed 트랜잭션이 커밋되면 원래 IAsymmetricObject 참고의 속성을 역참조하면 예외가 발생합니다. 따라서 트랜잭션 후에는 컬렉션에 있는 요소의 어떤 속성도 더 이상 역참조할 수 없습니다.
예외
유형 | 조건 |
---|---|
RealmInvalidTransactionException | Realm 에 활성화된 쓰기 트랜잭션 (write transaction)이 없을 때 이 옵션을 호출하는 경우 |
RealmObjectManagedByAntherRealmException | 둘 이상의 Realm 이 있는 객체를 managed 할 수 없습니다. |
Add<T>(IEnumerable<T>, bool)
이 Realm 에 독립형 RealmObjects collection을 추가합니다.
선언
public void Add<T>(IEnumerable<T> objs, bool update = false) where T : IRealmObject
매개변수
유형 | 이름 | 설명 |
---|---|---|
IEnumerable<T> | objs | 이 Realm 에 추가될 IRealmObject 인스턴스의 컬렉션입니다. |
부울 | update |
|
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IRealmObject여야 할 뿐만 아니라 Fody 위버에 의해 처리되었으므로 영구 속성을 갖습니다. |
비고
컬렉션에 이 Realm 에서 이미 관리 중인 항목이 포함되어 있으면 해당 항목은 무시됩니다. 이 메서드는 객체를 현 위치에서 수정하므로 실행 후 objs
의 모든 항목이 managed 됩니다.
예외
유형 | 조건 |
---|---|
RealmInvalidTransactionException | Realm 에 활성화된 쓰기 트랜잭션 (write transaction)이 없을 때 이 옵션을 호출하는 경우 |
RealmObjectManagedByAntherRealmException | 둘 이상의 Realm 이 있는 객체를 managed 할 수 없습니다. |
Add<T>(T)
이 Realm 은 독립형 객체로 생성된 IAsymmetricObject 를 관리하기 시작합니다.
선언
public void Add<T>(T obj) where T : IAsymmetricObject
매개변수
유형 | 이름 | 설명 |
---|---|---|
t | obj | 독립형 IAsymmetricObject 여야 하며 |
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IAsymmetricObject여야 할 뿐만 아니라 Fody 위버에 의해 처리되었으므로 영구 속성을 갖습니다. |
비고
객체가 이미 이 Realm에서 managed 경우 이 메서드는 아무 작업도 수행하지 않습니다. 이 메서드는 object를 제자리에서 수정하므로 object가 실행된 후에 IAsymmetricObject 가 managed. IAsymmetricObject 가 managed 원래 IAsymmetricObject 참고의 속성을 역참조하면 예외가 발생합니다.
예외
유형 | 조건 |
---|---|
RealmInvalidTransactionException | Realm 에 활성화된 쓰기 트랜잭션 (write transaction)이 없을 때 이 옵션을 호출하는 경우 |
RealmObjectManagedByAntherRealmException | 둘 이상의 Realm 이 있는 객체를 managed 할 수 없습니다. |
Add<T>(T, bool)
이 Realm 은 독립형 객체로 생성된 IRealmObject 관리를 시작합니다.
선언
public T Add<T>(T obj, bool update = false) where T : IRealmObject
매개변수
유형 | 이름 | 설명 |
---|---|---|
t | obj | 독립형 객체여야 하며 |
부울 | update |
|
반환
유형 | 설명 |
---|---|
t |
|
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IRealmObject여야 할 뿐만 아니라 Fody 위버에 의해 처리되었으므로 영구 속성을 갖습니다. |
비고
객체가 이미 이 Realm에서 managed, 이 메서드는 아무 작업도 수행하지 않습니다. 이 메서드는 객체를 제자리에서 수정하므로 객체가 실행된 후 obj
이(가) managed 됩니다. 이를 반환하는 것은 MEAN 구문 시나리오를 활성화하기 위한 편의를 위한 것입니다.
예외
유형 | 조건 |
---|---|
RealmInvalidTransactionException | Realm 에 활성화된 쓰기 트랜잭션 (write transaction)이 없을 때 이 옵션을 호출하는 경우 |
RealmObjectManagedByAntherRealmException | 둘 이상의 Realm 이 있는 객체를 managed 할 수 없습니다. |
All<T>()
직접 사용하거나 추가 쿼리하기 위해 반복 가능한 객체 세트를 추출합니다.
선언
public IQueryable<T> All<T>() where T : IRealmObject
반환
유형 | 설명 |
---|---|
IQueryable<T> | 추가 필터링 없이 이 Realm 에서 클래스 T의 모든 객체를 반복할 수 있는 쿼리 가능 collection입니다. |
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IRealmObject 여야 합니다. |
비고
반환된 collection은 느리게 평가되며 collection 자체에서 메모리에 객체를 보관하지 않으므로 많은 수의 항목에 대해서도 이 호출이 매우 저렴합니다.
StartWrite()
이 Realm에 대한 쓰기 트랜잭션(write transaction)을 시작합니다.
선언
public Transaction BeginWrite()
반환
유형 | 설명 |
---|---|
트랜잭션 | 쓰기 모드의 트랜잭션으로, Realm 에 유지되는 객체를 만들거나 수정하는 데 필요합니다. |
예시
using (var trans = realm.BeginWrite())
{
realm.Add(new Dog
{
Name = "Rex"
});
trans.Commit();
}
|
이 페이지 편집
소스 보기
StartWriteAsync(CancelationToken)
이 Realm에 대한 쓰기 트랜잭션(write transaction)을 비동기적으로 시작합니다.
선언
public Task<Transaction> BeginWriteAsync(CancellationToken cancellationToken = default)
매개변수
유형 | 이름 | 설명 |
---|---|---|
취소 토큰 | 취소 토큰 | 쓰기 트랜잭션(write transaction)을 시작하기 위해 대기하는 것을 중지하는 선택적 취소 토큰입니다. |
반환
유형 | 설명 |
---|---|
작업<트랜잭션> | 쓰기 모드에서 트랜잭션을 반환하는 대기 가능한 작업 입니다. Realm 에 유지되는 객체를 생성, 삭제 또는 수정하려면 트랜잭션이 필요합니다. |
비고
이 메서드는 비동기적으로 쓰기 잠금(write lock)을 획득한 다음 Realm이 열린 원래 스레드에 연속성을 전달합니다. 그런 다음 트랜잭션을 비동기적으로 또는 동기적으로 커밋할 수 있습니다.
SynchronizationContext 없이 스레드에서 호출되는 경우(예: 일반적으로 백그라운드 스레드)에서, 이 메서드는 BeginWrite() 를 호출하고 동기적으로 실행됩니다.
예시
using (var trans = await realm.BeginWriteAsync())
{
realm.Add(new Dog
{
Name = "Rex"
});
await trans.CommitAsync();
// or just
// trans.Commit();
}
|
이 페이지 편집
소스 보기
컴팩트(RealmConfigurationBase?)
Realm 파일을 압축합니다. Realm 파일에는 일반적으로 여유 공간/사용하지 않은 공간이 포함되어 있습니다. 이 방법을 사용하면 이 여유 공간이 제거되어 파일 크기가 줄어듭니다. Realm 파일 내의 객체는 그대로 유지됩니다.
선언
public static bool Compact(RealmConfigurationBase? config = null)
매개변수
유형 | 이름 | 설명 |
---|---|---|
RealmConfigurationBase | config | 선택적 구성입니다. |
반환
유형 | 설명 |
---|---|
부울 |
|
비고
Realm 파일은 다른 스레드에서 열리지 않아야 합니다. 파일 시스템에는 최소한 Realm 파일 사본을 위한 여유 공간이 있어야 합니다. 이 메서드는 트랜잭션 내에서 호출하면 안 됩니다. 파일 작업이 실패해도 Realm 파일은 그대로 유지됩니다.
DeleteRealm(RealmConfigurationBase)
Realm이 존재하지만 열려 있지 않은 경우 지정된 Realm과 연결된 모든 파일을 삭제합니다.
선언
public static void DeleteRealm(RealmConfigurationBase configuration)
매개변수
유형 | 이름 | 설명 |
---|---|---|
RealmConfigurationBase | 구성 | 영역 경로를 제공하는 RealmConfigurationBase 입니다. |
비고
Realm 파일은 다른 스레드에서 열리지 않아야 합니다.
.lock을 제외한 모든 항목 파일이 삭제됩니다.
예외
유형 | 조건 |
---|---|
RealmInUseException | Realm이 아직 열려 있는 경우 발생합니다. |
Dispose()
현재 인스턴스를 삭제하고 참조를 보유한 마지막 남은 인스턴스인 경우 네이티브 Realm을 닫습니다.
선언
public void Dispose()
Find<T>(ObjectId?)
PrimaryKey 속성이 있는 클래스에서 객체를 빠르게 조회합니다.
선언
public T? Find<T>(ObjectId? primaryKey) where T : IRealmObject
매개변수
유형 | 이름 | 설명 |
---|---|---|
ObjectId? | 기본 키 | == 검색과 동일하게 정확히 일치해야 하는 프라이머리 키는 |
반환
유형 | 설명 |
---|---|
t |
|
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IRealmObject 여야 합니다. |
예외
유형 | 조건 |
---|---|
RealmClassLacksPrimaryKeyException | IRealmObject 클래스 T에 PrimaryKeyAttribute 가 없는 경우. |
찾기<T>(Guid?)
PrimaryKey 속성이 있는 클래스에서 객체를 빠르게 조회합니다.
선언
public T? Find<T>(Guid? primaryKey) where T : IRealmObject
매개변수
유형 | 이름 | 설명 |
---|---|---|
가이드? | 기본 키 | == 검색과 동일하게 정확히 일치해야 하는 프라이머리 키는 |
반환
유형 | 설명 |
---|---|
t |
|
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IRealmObject 여야 합니다. |
예외
유형 | 조건 |
---|---|
RealmClassLacksPrimaryKeyException | IRealmObject 클래스 T에 PrimaryKeyAttribute 가 없는 경우. |
Find<T>(long?)
PrimaryKey 속성이 있는 클래스에서 객체를 빠르게 조회합니다.
선언
public T? Find<T>(long? primaryKey) where T : IRealmObject
매개변수
유형 | 이름 | 설명 |
---|---|---|
long? | 기본 키 | == 검색과 동일하게 정확히 일치해야 하는 프라이머리 키는 |
반환
유형 | 설명 |
---|---|
t |
|
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IRealmObject 여야 합니다. |
예외
유형 | 조건 |
---|---|
RealmClassLacksPrimaryKeyException | IRealmObject 클래스 T에 PrimaryKeyAttribute 가 없는 경우. |
찾기<T>(문자열?)
PrimaryKey 속성이 있는 클래스에서 객체를 빠르게 조회합니다.
선언
public T? Find<T>(string? primaryKey) where T : IRealmObject
매개변수
유형 | 이름 | 설명 |
---|---|---|
문자열 | 기본 키 | == 검색과 동일하게 정확히 일치해야 하는 프라이머리 키는 |
반환
유형 | 설명 |
---|---|
t |
|
유형 매개변수
이름 | 설명 |
---|---|
t | 유형 T는 IRealmObject 여야 합니다. |
예외
유형 | 조건 |
---|---|
RealmClassLacksPrimaryKeyException | IRealmObject 클래스 T에 PrimaryKeyAttribute 가 없는 경우. |
동결()
이 Realm의 동결(불변) 스냅샷을 반환합니다.
동결된 Realm은 Realm 데이터의 특정 버전에 대한 변경할 수 없는 스냅샷 보기입니다. 일반 Realm 인스턴스와 달리 Realm에 작성된 쓰기를 반영하여 실시간 업데이트되지 않으며 모든 스레드에서 액세스할 수 있습니다. 동결된 Realm에 쓰는 것은 허용되지 않으며 쓰기 트랜잭션(write transaction)을 시작하려고 하면 예외가 발생합니다. 동결된 Realm에서 읽은 모든 객체와 collection도 동결됩니다. 참고: 버전이 다른 다수의 동결된 Realm을 활성 상태로 유지하면 기본 데이터베이스의 파일 크기에 부정적인 영향을 미칠 수 있습니다. 이러한 상황을 방지하려면 MaxNumberOfActiveVersions 를 설정할 수 있습니다.선언
public Realm Freeze()
반환
유형 | 설명 |
---|---|
Realm | 동결된 Realm 인스턴스 입니다. |
GetInstance(RealmConfigurationBase?)
이 스레드에 대한 Realm 인스턴스를 가져오기 위한 팩토리입니다.
선언
public static Realm GetInstance(RealmConfigurationBase? config = null)
매개변수
유형 | 이름 | 설명 |
---|---|---|
RealmConfigurationBase | config | 선택적 구성입니다. |
반환
유형 | 설명 |
---|---|
Realm | Realm 인스턴스 입니다. |
예외
유형 | 조건 |
---|---|
RealmFileAccessErrorException | 파일 시스템이 파일 생성을 방해하는 오류를 반환하면 발생합니다. |
GetInstance(문자열)
이 스레드에 대한 Realm 인스턴스를 가져오기 위한 팩토리입니다.
선언
public static Realm GetInstance(string databasePath)
매개변수
유형 | 이름 | 설명 |
---|---|---|
문자열 | databasePath | 영역의 경로는 현재 플랫폼, 상대 하위 디렉토리 또는 파일 이름에 대한 유효한 전체 경로여야 합니다. |
반환
유형 | 설명 |
---|---|
Realm | Realm 인스턴스 입니다. |
비고
상대 경로를 지정하는 경우 하위 디렉토리 이외의 경로를 지정하면 OS에 의한 샌드박싱으로 인해 실패할 수 있습니다.
예외
유형 | 조건 |
---|---|
RealmFileAccessErrorException | 파일 시스템이 파일 생성을 방해하는 오류를 반환하면 발생합니다. |
GetInstanceAsync(RealmConfigurationBase?,CancellationToken)
Realm 인스턴스를 비동기적으로 가져오기 위한 팩토리입니다.
선언
public static Task<Realm> GetInstanceAsync(RealmConfigurationBase? config = null, CancellationToken cancellationToken = default)
매개변수
유형 | 이름 | 설명 |
---|---|---|
RealmConfigurationBase | config | 영역을 설명하는 구성 객체입니다. |
취소 토큰 | 취소 토큰 | 작업을 취소하는 데 사용할 수 있는 선택적 취소 토큰입니다. |
반환
유형 | 설명 |
---|---|
작업<Realm> | 원격 영역이 완전히 동기화되거나 로컬 영역인 경우 마이그레이션이 실행된 후에 완료되는 대기 가능 Task<TResult> 입니다. |
비고
구성이 SyncConfigurationBase 인 경우 반환된 작업 객체가 완료되기 전에 영역이 다운로드되어 서버와 완전히 동기화됩니다. 그렇지 않으면 이 메서드는 열린 인스턴스를 호출 스레드로 반환하기 전에 백그라운드 스레드에서 마이그레이션을 수행합니다.
IsSameInstance(Realm)
이 인스턴스가 전달된 인수와 동일한 코어 인스턴스인지 여부를 결정합니다.
선언
public bool IsSameInstance(Realm other)
매개변수
유형 | 이름 | 설명 |
---|---|---|
Realm | 기타 | 현재 Realm과 비교할 Realm을 선택합니다. |
반환
유형 | 설명 |
---|---|
부울 |
|
비고
경로가 동일하고 동일한 Realm을 여는 서로 다른 스레드에서 여러 인스턴스를 열 수 있고 또 열도록 해야 합니다.
새로 고침()
Realm 인스턴스와 처리되지 않은 객체가 가장 최근의 버전을 점하도록 업데이트합니다.
선언
public bool Refresh()
반환
유형 | 설명 |
---|---|
부울 | Realm 에 업데이트가 있었는지 여부입니다. 실제로 변경된 데이터가 없더라도 true를 반환할 수 있습니다. |
새로 고침Async()
Realm 인스턴스와 처리되지 않은 객체가 가장 최근의 버전을 가리키도록 업데이트될 때까지 비동기적으로 기다립니다.
선언
public Task<bool> RefreshAsync()
반환
유형 | 설명 |
---|---|
작업<bool> | Realm 에 업데이트가 있었는지 여부입니다. 실제로 변경된 데이터가 없더라도 true를 반환할 수 있습니다. |
비고
작업자 스레드(SynchronizationContext가 null인 경우)에서는 대신 블로킹 refresh() 메서드가 호출됩니다. 메인 스레드(또는 SynchronizationContext가 있는 다른 스레드)에서는 인스턴스가 자동으로 업데이트되어 작업을 해결할 때까지 대기합니다. 반환된 작업이 해결될 때까지 Realm에 대한 참고를 유지해야 합니다.
Remove(IRalmObjectBase)
이 Realm에서 영구 객체를 제거하여 효과적으로 삭제합니다.
선언
public void Remove(IRealmObjectBase obj)
매개변수
유형 | 이름 | 설명 |
---|---|---|
IRealmObjectBase | obj | 이 Realm에서 지속되는 객체여야 합니다. |
예외
유형 | 조건 |
---|---|
RealmInvalidTransactionException | Realm 에 활성화된 쓰기 트랜잭션 (write transaction)이 없을 때 이 옵션을 호출하는 경우 |
ArgumentNullException |
|
ArgumentException | 관리되지 않는 객체를 전달하는 경우. |
RemoveAll()
이 Realm에서 managed하는 모든 유형의 객체를 모두 제거합니다.
선언
public void RemoveAll()
예외
유형 | 조건 |
---|---|
RealmInvalidTransactionException | Realm 에 활성화된 쓰기 트랜잭션 (write transaction)이 없을 때 이 옵션을 호출하는 경우 |
RemoveAll<T>()
Realm에서 특정 유형의 모든 객체를 제거합니다.
선언
public void RemoveAll<T>() where T : IRealmObject
유형 매개변수
이름 | 설명 |
---|---|
t | 제거할 객체의 유형입니다. |
예외
유형 | 조건 |
---|---|
RealmInvalidTransactionException | Realm 에 활성화된 쓰기 트랜잭션 (write transaction)이 없을 때 이 옵션을 호출하는 경우 |
ArgumentException | T 유형이 이 Realm의 스키마 의 제한된 클래스 세트의 일부가 아닌 경우. |
RemoveRange<T>(IQueryable<T>)
Realm에서 쿼리와 일치하는 객체를 제거합니다.
선언
public void RemoveRange<T>(IQueryable<T> range) where T : IRealmObjectBase
매개변수
유형 | 이름 | 설명 |
---|---|---|
IQueryable<T> | 범위 | 일치시킬 쿼리입니다. |
유형 매개변수
이름 | 설명 |
---|---|
t | 제거할 객체의 유형입니다. |
예외
유형 | 조건 |
---|---|
RealmInvalidTransactionException | Realm 에 활성화된 쓰기 트랜잭션 (write transaction)이 없을 때 이 옵션을 호출하는 경우 |
ArgumentException |
|
ArgumentNullException |
|
ResolveReference<TValue>(Dictionary<TValue>)
ThreadSafeReference.Dictionary<TValue> 가 처음 생성될 때 참고 collection과 동일한 collection을 반환하지만 이 스레드의 현재 Realm에 대해 확인됩니다.
선언
public IDictionary<string, TValue>? ResolveReference<TValue>(ThreadSafeReference.Dictionary<TValue> reference)
매개변수
유형 | 이름 | 설명 |
---|---|---|
ThreadSafeReference.딕셔너리<TValue> | 참조 | 이 Realm 에서 확인할 스레드 제한 IDictionary<TKey, TValue> 에 대한 스레드 세이프 참조입니다. |
반환
유형 | 설명 |
---|---|
IDictionary<string, TValue> | 현재 스레드에 대해 확인된 원본 IDictionary<TKey, TValue> 의 스레드 제한 인스턴스이거나, 참고가 생성된 후 사전의 상위 객체가 삭제된 경우 |
유형 매개변수
이름 | 설명 |
---|---|
TValue | 딕셔너리에 포함된 값의 유형입니다. |
ResolveReference<T>(List<T>)
ThreadSafeReference.List<T> 가 처음 생성될 때 참고되었지만 이 스레드의 현재 Realm에 대해 확인된 collection과 동일한 collection을 반환합니다.
선언
public IList<T>? ResolveReference<T>(ThreadSafeReference.List<T> reference)
매개변수
유형 | 이름 | 설명 |
---|---|---|
ThreadSafeReference.목록<T> | 참조 | 이 Realm 에서 확인할 스레드 제한 IList<T> 에 대한 스레드 안전 참조입니다. |
반환
유형 | 설명 |
---|---|
IList<T> | 현재 스레드 또는 참조가 생성된 후 목록의 상위 객체가 삭제된 경우 |
유형 매개변수
이름 | 설명 |
---|---|
t | collection에 포함된 객체의 유형입니다. |
ResolveReference<T>(객체<T>)
ThreadSafeReference.객체<T> 가 처음 생성될 때 참고되었지만 이 스레드의 현재 Realm에 대해 확인된 객체와 동일한 객체를 반환합니다.
선언
public T? ResolveReference<T>(ThreadSafeReference.Object<T> reference) where T : IRealmObjectBase
매개변수
유형 | 이름 | 설명 |
---|---|---|
ThreadSafeReference.객체<T> | 참조 | 이 Realm에서확인할 스레드에 한정된 IRealmObject /IEmbeddedObject 에 대한 스레드 안전 참고입니다. |
반환
유형 | 설명 |
---|---|
t | 현재 스레드 또는 참고가 생성된 후 객체가 삭제된 경우 |
유형 매개변수
이름 | 설명 |
---|---|
t | 참고에 포함된 객체의 유형입니다. |
ResolveReference<T>(쿼리<T>)
ThreadSafeReference.쿼리<T> 가 처음 생성될 때 참고되었지만 이 스레드의 현재 Realm에 대해 확인된 쿼리와 동일한 쿼리를 반환합니다.
선언
public IQueryable<T> ResolveReference<T>(ThreadSafeReference.Query<T> reference) where T : IRealmObjectBase
매개변수
유형 | 이름 | 설명 |
---|---|---|
ThreadSafeReference.쿼리<T> | 참조 | 이 Realm 에서 확인할 스레드 제한 IQueryable 에 대한<T> 스레드 안전 참조입니다. |
반환
유형 | 설명 |
---|---|
IQueryable<T> | 현재 스레드에 대해 확인된 원본 IQueryable<T> 의 스레드에 한정된 인스턴스입니다. |
유형 매개변수
이름 | 설명 |
---|---|
t | 쿼리에 포함된 객체의 유형입니다. |
ResolveReference<T>(Set<T>)
ThreadSafeReference.Set<T> 가 처음 생성될 때 참고되었지만 이 스레드의 현재 Realm에 대해 확인된 collection과 동일한 collection을 반환합니다.
선언
public ISet<T>? ResolveReference<T>(ThreadSafeReference.Set<T> reference)
매개변수
유형 | 이름 | 설명 |
---|---|---|
ThreadSafeReference.설정<T> | 참조 | 이 Realm 에서 확인할 스레드 제한 ISet<T> 에 대한 스레드 세이프 참조입니다. |
반환
유형 | 설명 |
---|---|
ISet<T> | 현재 스레드 또는 참고가 생성된 후 세트의 상위 객체가 삭제된 경우 |
유형 매개변수
이름 | 설명 |
---|---|
t | collection에 포함된 요소의 유형입니다. |
SetLegacySerialization()
레거시 직렬화를 사용하도록 직렬 변환기를 설정합니다.
선언
[Obsolete("It is recommended to use new serialization.")]
public static void SetLegacySerialization()
비고
버전 12.0.0 에서는 MongoClient.Collection<TDocument> 에서 메서드를 사용할 때 MongoDB .Bson 속성으로 클래스에 주석을 달 필요 없이 Realm 클래스의 새로운 자동 직렬화 및 역직렬화가 도입되었습니다. 이 새로운 직렬화는 다양한 유형( 인스턴스 :DateTimeOffset )에 대한 기본값 직렬 변환기를 변경했으므로 이전 직렬화를 사용하려는 경우 이 메서드를 호출해야 합니다. 어떤 종류의 직렬화가 필요하기 전에 이 메서드를 호출하지 않으면 예상대로 작동하지 않을 수 있습니다.
쓰기(조치)
임시 Transaction 내에서 작업을 실행합니다. 예외가 발생하지 않으면 트랜잭션 이 커밋됩니다.
선언
public void Write(Action action)
매개변수
유형 | 이름 | 설명 |
---|---|---|
작업 | 조치 | Transaction 내에서 실행할 작업으로, 객체를 생성, 업데이트 또는 제거합니다. |
비고
자체 임시 트랜잭션 을 생성하고 action
에 전달된 Lambda를 실행한 후 커밋합니다. 여러 번의 Write(조치) 호출로 여러 개의 단일 속성 업데이트를 래핑하지 않도록 주의하세요. 세분화된 업데이트를 보장해야 하는 경우가 아니라면 여러 속성을 업데이트하거나 단일 Write(조치) 로 여러 객체를 생성하는 것이 더 효율적입니다.
예시
realm.Write(() =>
{
realm.Add(new Dog
{
Name = "Eddie",
Age = 5
});
});
|
이 페이지 편집
소스 보기
WriteAsync(조치, 취소 토큰)
임시 트랜잭션 내에서 조치를 실행합니다. 예외가 발생하지 않으면 트랜잭션 이 커밋됩니다. 메서드가 SynchronizationContext 가 있는 스레드(예: UI 스레드)에서 호출되지 않으면 동기적으로 동작합니다.
선언
public Task WriteAsync(Action action, CancellationToken cancellationToken = default)
매개변수
유형 | 이름 | 설명 |
---|---|---|
작업 | 조치 | Transaction 내에서 실행할 작업으로, 객체를 생성, 업데이트 또는 제거합니다. |
취소 토큰 | 취소 토큰 | 쓰기 트랜잭션(write transaction)을 시작하기 위해 대기하는 것을 중지하는 선택적 취소 토큰입니다. |
반환
유형 | 설명 |
---|---|
작업 | 트랜잭션이 성공적으로 커밋되었음을 나타내는 대기 가능한 작업 입니다. |
예시
await realm.WriteAsync(() =>
{
realm.Add(new Dog
{
Breed = "Dalmatian",
});
});
|
이 페이지 편집
소스 보기
WriteAsync<T>(Func<T>,CancellationToken)
임시 트랜잭션 내에서 위임을 실행합니다. 예외가 발생하지 않으면 트랜잭션 이 커밋됩니다. 메서드가 SynchronizationContext 가 있는 스레드(예: UI 스레드)에서 호출되지 않으면 동기적으로 동작합니다.
선언
public Task<T> WriteAsync<T>(Func<T> function, CancellationToken cancellationToken = default)
매개변수
유형 | 이름 | 설명 |
---|---|---|
Function<T> | 함수 | 트랜잭션 내에서 실행할 객체를 생성, 업데이트 또는 제거할 때 하나의 반환 값으로 위임합니다. |
취소 토큰 | 취소 토큰 | 쓰기 트랜잭션(write transaction)을 시작하기 위해 대기하는 것을 중지하는 선택적 취소 토큰입니다. |
반환
유형 | 설명 |
---|---|
작업<T> | 트랜잭션이 성공적으로 커밋되었음을 나타내는 대기 가능한 작업 입니다. 작업 결과는 |
유형 매개변수
이름 | 설명 |
---|---|
t | 입력 위임이 반환한 형식입니다. |
예시
var dog = await realm.WriteAsync(() =>
{
return realm.Add(new Dog
{
Breed = "Dalmatian",
});
});
|
이 페이지 편집
소스 보기
WriteCopy(RealmConfigurationBase)
Realm의 압축된 복사본을 지정된 구성의 경로에 씁니다. 구성 객체에 null이 아닌 EncryptionKey 가 있는 경우 사본은 해당 키로 암호화됩니다.
선언
public void WriteCopy(RealmConfigurationBase config)
매개변수
유형 | 이름 | 설명 |
---|---|---|
RealmConfigurationBase | config | 구성에서 복사본의 경로와 선택적으로 암호화 키를 지정합니다. |
비고
- 대상 파일이 이미 존재할 수 없습니다.
- 로컬 Realm을 사용하고 트랜잭션 내에서 호출되면 마지막 트랜잭션이 커밋될 때의 데이터가 아니라 현재 데이터를 기록합니다.
- 동기화를 사용하는 경우 사본을 기록하려면 먼저 모든 로컬 변경 사항을 서버와 동기화해야 합니다. 이는 파일을 새로 설치된 애플리케이션의 시작점으로 사용할 수 있도록 하기 위한 것입니다. 보류 중인 업로드가 있는 경우 함수가 발생합니다.
- flexible sync가 이미 활성화되어 있지 않은 경우 flexible sync Realm에 사본을 쓰는 것은 지원되지 않습니다. 5 Flexible sync 동기화에서 파티션 기반 동기화로의 변경은 지원되지 않습니다.
- 동기화할 파티션을 변경하는 것은 지원되지 않습니다.
Write<T>(Func<T>)
선언
public T Write<T>(Func<T> function)
매개변수
유형 | 이름 | 설명 |
---|---|---|
Function<T> | 함수 | 트랜잭션 내에서 실행할 객체를 생성, 업데이트 또는 제거할 때 하나의 반환 값으로 위임합니다. |
반환
유형 | 설명 |
---|---|
t |
|
유형 매개변수
이름 | 설명 |
---|---|
t | 입력 위임이 반환한 형식입니다. |
비고
자체 임시 트랜잭션 을 생성하고 function
에 전달된 Lambda를 실행한 후 커밋합니다. 여러 번의 Write(조치) 호출로 여러 개의 단일 속성 업데이트를 래핑하지 않도록 주의하세요. 세분화된 업데이트를 보장해야 하는 경우가 아니라면 여러 속성을 업데이트하거나 단일 Write(조치) 로 여러 객체를 생성하는 것이 더 효율적입니다.
예시
var dog = realm.Write(() =>
{
return realm.Add(new Dog
{
Name = "Eddie",
Age = 5
});
});
이벤트
| 이 페이지 편집 소스 보기오류
Realm 수준 예외가 발생하면 트리거됩니다.
선언
public event EventHandler<ErrorEventArgs>? Error
eventType
유형 | 설명 |
---|---|
EventHandler<ErrorEventArgs> |
RealmChanged
Realm이 변경될 때(즉, 트랜잭션 이 커밋될 때) 트리거됩니다.
선언
public event Realm.RealmChangedEventHandler? RealmChanged
eventType
유형 | 설명 |
---|---|
Realm.RealmChangedEventHandler |