Firestore .NET/C# SDK 如何通过ETag/If-Match实现条件更新?
结论
当前官方Firestore .NET SDK确实无法直接实现基于ETag的条件更新功能
你所观察到的SDK仅暴露了Precondition.LastUpdateTime属性可配合DocumentReference.UpdateAsync方法做条件更新、SetOptions无相关配置的情况是准确的。该限制的核心原因是Firestore .NET SDK底层默认采用gRPC协议通信,目前gRPC协议层本身暂未提供ETag匹配的对应支持,即便REST API有相关能力,上层.NET SDK也无法越过gRPC层封装该功能,这和Jon Skeet在GitHub Issue中的回应完全一致。如需立即使用该特性,目前只能自行实现REST调用
你可以直接对接Firestore REST接口,自行处理响应返回的ETag或自定义X-Firebase-ETag头,在更新请求中携带if-match头即可实现条件更新逻辑。
后续如果Firestore团队在gRPC协议层补充了ETag匹配支持,官方.NET SDK才会跟进封装对应的暴露入口。
内容的提问来源于stack exchange,提问作者Luke Puplett
相关产品推荐
相关产品推荐

