Tipos de campo - .NET SDK
Nesta página
Visão geral
O .NET SDK oferece suporte a três categorias de tipos de dados:
Para saber como tipos de dados específicos são mapeados para tipos BSON em um Esquema de Serviços de Aplicativo, consulte Mapeamento de Modelo de Dados na documentação de Serviços de Aplicativo do Atlas.
Tipos de .NET
O Realm é compatível com os seguintes tipos de dados .NET e suas contrapartes anuláveis:
bool
byte
short
int
long
float
double
decimal
char
string
byte[]
DateTimeOffset
(observação: o Realm converteDateTimeOffset
valores de para UTC antes de armazenar no banco de dados e não armazena as informações de fuso horário.Consulte Problema #1835 para obter mais informações.)Guid
IList<T>
, onde T é qualquer um dos tipos de dados suportados (consulte Listas)
Observação
Os tipos byte
, char
, short
, int
e long
são todos armazenados como valores inteiros de 64 bits no Realm.
Tipos de MongoDB.Bson
ObjectId
Decimal128
propriedade de GUID e ObjectId
MongoDB.Bson.ObjectId
é um valor exclusivo de 12 bytes específico do MongoDB, enquanto o .NET tipo Guid
integrado é um valor universalmente exclusivo de 16 bytes. Ambos os tipos são indexáveis e qualquer um pode ser usado como chave primária.
Usando valores decimais
O Realm suporta valores decimais de 128 bits com o tipo Decimal128
BSON. Ao definir um tipo de decimal, você pode usar o tipo Decimal128
BSON ou o tipo .NET decimal
, mesmo que seja apenas um decimal de 96 bits. O SDK converte automaticamente entre os dois, embora você corra o risco de perder precisão ou alcance. O exemplo a seguir mostra como usar o tipo Decimal128
BSON e o tipo .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); }); } }
Tipos específicos do domínio
Qualquer classe que implemente RealmObject
ou EmbeddedObject
pode conter uma subclasse RealmObject
e/ou uma subclasse de objetos embarcados . Além disso, o Realm suporta os seguintes tipos personalizados: