객체 모델 & 스키마 - .NET SDK
이 페이지의 내용
객체 유형 및 스키마
Realm 애플리케이션은 데이터를 각각 하나 이상의 기본 데이터 유형 또는 다른 Realm 객체를 포함하는 속성-값 쌍으로 구성된 객체로 모델링합니다. Realm 객체는 기본적으로 일반 객체와 동일하지만 RealmObject 또는 EmbeddedObject 에서 상속되며 실시간 업데이트 데이터 보기 및 반응형 변경 이벤트 핸들러와 같은 추가 기능이 포함되어 있습니다.
모든 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>
를 사용합니다. 영역은 속성에 처음 액세스할 때 컬렉션 인스턴스를 생성하므로 생성자에서 초기화할 필요가 없습니다.