Overview
.NET SDK は、次の 3 つのカテゴリのデータ型をサポートしています。
App Services スキーマで特定のデータ型が にどのようにマッピングされるかについては、BSON types ドキュメントの「 データモデル マッピングAtlas App Services 」 を参照してください。
.NET タイプ
Realm は、次の .NET データ型と null 可能なカウンターポートをサポートしています。
boolbyteshortintlongfloatdoubledecimalcharstringbyte[]DateTimeOffset(注: Realm はデータベースに保存する前にDateTimeOffset値を UTC に変換し、タイムゾーン情報を保存しません。詳細については、 問題番号1835 を参照してください。)GuidIList<T>、T はサポートされているデータ型のいずれか(リストを参照)
注意
byte 、 char 、 short 、 int 、 long型はすべて、Realm 内に 64 ビット整数値として保存されます。
MongoDB.Bson の型
ObjectIdDecimal128
Guid プロパティと ObjectId プロパティ
MongoDB.Bson.ObjectId は MongoDB 固有の 12 バイトの一意の値であり、組み込み.NET 型Guidは 16 バイトの汎用一意の値です。 どちらのタイプもインデックス可能で、どちらもプライマリキー として使用できます。
Using Decimal Values
Realmは、Decimal128 BSON型の 128 ビットの 10 進値をサポートしています。 10 進数を定義する場合、96 ビットの 10 進数のみであっても、Decimal128 BSON型または.NET decimal 型を使用できます。 SDK は 2 つの間を自動的に変換しますが、精度や範囲が失われるリスクがあります。 次の例は、Decimal128 BSON型と.NET decimal 型の両方を使用する方法を示しています。
public class MyClassWithDecimals { [] public ObjectId _id { get; } = ObjectId.GenerateNewId(); // Standard (96-bit) decimal value type public decimal VeryPreciseNumber { get; set; } // 128-bit Decimal128 public Decimal128 EvenMorePreciseNumber { get; set; } public Decimal128 AnotherEvenMorePreciseNumber { get; set; } // Nullable decimal or Decimal128 are supported, too public decimal? MaybeDecimal { get; set; } public Decimal128? MaybeDecimal128 { get; set; } public void DoDecimalStuff() { var myInstance = new MyClassWithDecimals(); // To store decimal values: realm.Write(() => { myInstance.VeryPreciseNumber = 1.234567890123456789M; myInstance.EvenMorePreciseNumber = Decimal128.Parse("987654321.123456789"); // Decimal128 has explicit constructors that take a float or a double myInstance.EvenMorePreciseNumber = new Decimal128(9.99999); }); } }
Realm 固有のタイプ
RealmObjectまたはEmbeddedObjectを実装するクラスには、 RealmObjectサブクラスや埋め込みオブジェクトサブクラスを含めることができます。 さらに、Realm は次のカスタムタイプをサポートしています。