Docs 菜单

Docs 主页开发应用程序Atlas Device SDKs

字段类型 - .NET SDK

在此页面上

  • 概述
  • .NET 类型
  • MongoDB.Bson 类型
  • Guid 和 ObjectId 属性
  • 使用十进制值
  • 特定 Realm 类型

.NET SDK 支持三类数据类型:

要了解如何将特定数据类型映射到 App Services 模式中的 BSON 类型,请参阅 Atlas App Services 文档中的数据模型映射

Realm 支持以下 .NET 数据类型及其可为 null 的对应项:

  • bool

  • byte

  • short

  • int

  • long

  • float

  • double

  • decimal

  • char

  • string

  • byte[]

  • DateTimeOffset (注意:Realm 会在将DateTimeOffset 值存储到数据库之前,将其转换为 UTC,并且不会存储时区信息。请参阅 问题1835 # 了解更多信息。)

  • Guid

  • IList<T>,其中 T 是任何受支持的数据类型(请参阅列表)

注意

bytecharshortintlong类型均作为 64 位整数值存储在 Realm 中。

  • ObjectId

  • Decimal128

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
{
[PrimaryKey]
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);
});
}
}

任何实现RealmObjectEmbeddedObject的类都可以包含RealmObject子类和/或嵌入式对象子类。 此外,Realm 支持以下自定义类型:

← Realm 数据类型 - .NET SDK