Docs 主页 → 开发应用程序 → Atlas Device SDKs
字段类型 - .NET SDK
概述
.NET SDK 支持三类数据类型:
要了解如何将特定数据类型映射到 App Services 模式中的 BSON 类型,请参阅 Atlas App Services 文档中的数据模型映射。
.NET 类型
Realm 支持以下 .NET 数据类型及其可为 null 的对应项:
bool
byte
short
int
long
float
double
decimal
char
string
byte[]
DateTimeOffset
(注意:Realm 会在将DateTimeOffset
值存储到数据库之前,将其转换为 UTC,并且不会存储时区信息。请参阅 问题1835 # 了解更多信息。)Guid
IList<T>
,其中 T 是任何受支持的数据类型(请参阅列表)
注意
byte
、 char
、 short
、 int
和long
类型均作为 64 位整数值存储在 Realm 中。
MongoDB.Bson 类型
ObjectId
Decimal128
Guid 和 ObjectId 属性
MongoDB.Bson.ObjectId
是 MongoDB 特有的 12 字节唯一值,而内置 .NET 类型Guid
是 16 字节通用唯一值。 这两种类型都是可索引的,并且都可以用主键。
使用十进制值
Realm 支持Decimal128
Bson 类型的 128 位十进制值。 定义十进制类型时,可以使用Decimal128
Bson 类型或 .NET decimal
类型,即使它只是 96 位十进制。 SDK 会自动在两者之间进行转换,但可能会导致精度或范围丢失。 以下示例展示了如何同时使用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 支持以下自定义类型: