单向数据导入 - .NET SDK
在此页面上
10.17.0 版本新增。
您可以使用数据导入将数据从客户端应用程序流传输到启用了 Flexible Sync 的Atlas App Services App。
您可能希望在物联网(IoT)应用程序中单向同步数据,例如将数据发送到云的天气传感器。数据导入对于写入不需要冲突解决的其他类型的不可变数据也很有用,例如从零售应用程序创建发票或记录应用程序事件。
数据导入经过优化,可为繁重的客户端仅插入工作负载提供性能改进。
重要
您无法从客户端应用程序中查询、修改或删除非对称对象。 由于客户端无法修改 AsymmetricObject,因此编译器不允许您添加对 AsymmetricObject 的订阅。
.NET SDK 允许您在同一 Realm 中使用非对称对象和标准 Realm 对象。
从客户端应用程序单向同步数据
在 11.6.0 版本中进行了更改。
在设置数据导入之前,您需要了解以下规则:
要与 Atlas 同步的 C# 对象必须实现IAsymmetricObject接口或从AsymmetricObject类派生。
从 .NET SDK 版本11.6.0及更高版本开始,实现
IAsymmetricObject
的对象可以包含IEmbeddedObject类型以及指向IRealmObject
类型的链接。 在 .NET SDK 版本11中。 5 。 0 及更早版本中,实现IAsymmetricObject
的对象只能包含IEmbeddedObject类型,不支持指向IRealmObject
类型或其他IAsymmetricObject
类型的链接。IRealmObject
和IEmbeddedObject
类型不能包含IAsymmetricObject
类型作为属性。单向同步需要Flexible Sync。
只要遵循上述规则,非对称同步数据的过程与标准双向同步相同。以下代码显示了如何创建一个非对称对象并将其与后端同步。 它还会显示生成错误的查询。
private partial class Measurement : IAsymmetricObject { [ ] public Guid Id { get; private set; } = Guid.NewGuid(); public double Value { get; set; } public DateTimeOffset Timestamp { get; private set; } = DateTimeOffset.UtcNow; } public void SendMeasurementToRealm() { var measurement = new Measurement { Value = 9.876 }; realm.Write(() => { realm.Add(measurement); }); // The following line will cause a compile time error // _ = realm.All<Measurement>(); // The following line will compile but throw a // Realms.Exceptions.RealmInvalidObjectException at runtime // _ = measurement.Value; }
Atlas Device Sync 全面管理这些数据的生命周期。它会保留在设备上,直到数据摄入同步完成,然后从设备中删除。