适用于 SQL API 的 Azure Cosmos DB .NET SDK v3:下载和发行说明

适用于: SQL API

链接
SDK 下载 NuGet
API 文档 参考文档
示例 .NET代码示例
入门 Azure Cosmos DB .NET SDK 入门
Web 应用教程 使用 Azure Cosmos DB 开发 Web 应用程序
Entity Framework Core 教程 Entity Framework Core 与 Azure Cosmos DB 提供程序
当前受支持的框架 Microsoft .NET Standard 2.0

预览功能被视为单独的分支,在准备就绪之前不会包含在正式版本中。 每个预览版本都列出了所有已启用的附加功能。

该格式基于保留 Changelog,而此项目遵循语义化版本控制

3.18.0-preview - 2021-03-18

已添加

  • #2308 补丁:添加了对补丁 API 的预览版支持
  • #2312 诊断:添加了 Api 以用于获取请求所联系的所有区域

固定

  • #2314 诊断:修复了由于在 TraceWriter 中同时修改字典而导致的 InvalidOperationException。 已在 3.17.0 PR #2242 中引入
  • #2303 CosmosException:修复了用于删除 JSON 格式的异常消息
  • #2311 空间:修复了在 Json 不表示空间类型时的反序列化
  • #2284 诊断:为缓存操作添加了跟踪。 已在 3.17.0 PR #2097 中引入
  • #2278 文档:在注释示例中修复了键入错误(感谢 paulomorgado)
  • #2279 可用性:修复了在网关挂起时,控制平面热路径上的区域故障转移逻辑。 已在 3.16.0 PR #1954 中引入
  • #2286 诊断:修复了导致不包含 ActivityId 的回归。 已在 3.17.0 PR #2097 中引入

3.17.1 - 2021-03-19

固定

  • #2314 诊断:修复了由于在 TraceWriter 中同时修改字典而导致的 InvalidOperationException。 已在 3.17.0 PR #2242 中引入
  • #2303 CosmosException:修复了用于删除 JSON 格式的异常消息
  • #2311 空间:修复了在 Json 不表示空间类型时的反序列化
  • #2284 诊断:为缓存操作添加了跟踪。 已在 3.17.0 PR #2097 中引入
  • #2278 文档:在注释示例中修复了键入错误(感谢 paulomorgado)
  • #2279 可用性:修复了在网关挂起时,控制平面热路径上的区域故障转移逻辑。 已在 3.16.0 PR #1954 中引入
  • #2286 诊断:修复了导致不包含 ActivityId 的回归。 已在 3.17.0 PR #2097 中引入

3.17.0 - 2021-03-02

已添加

  • #1870 批处理 API:添加了会话令牌支持
  • #2145 EnableContentResponseOnWrite:通过 CosmosClientOptions 和 CosmosClientBuilder 添加了客户端级别支持
  • #2166 QueryRequestOption:添加了优化以避免重复 QueryRequestOption
  • #1830 & #2170 更改源估算器:添加了对每个租约的详细估算的支持
  • #2097 & #2204 & #2213 & #2235 & #2236 & #2242 & #2246 CosmosDiagnostics:已重构为将 ITrace 用作默认实现
  • #2206 LINQ:添加了用户定义的函数翻译支持(感谢 dpiessens)
  • #2210 QueryDefinition:添加了 API 以获取查询参数(感谢 thomaslevesque)
  • #2197 CosmosClient:添加了 CreateAndInitializeAsync 方法,该方法可用于避免第一次操作时预热缓存延迟。
  • #2220 LINQ:将 camelCase 支持作为可选参数添加到 GetItemLinqQueryable()
  • #2249 性能:添加了 HTTP 优化以禁用 .NET Framework 应用程序的 Nagle 算法

固定

  • #2168 查询:修复了 Take 运算符中的回归,在该运算符中耗尽整个查询,而不是停止 Take 计数。 已在 3.14.0 PR #1812 中引入且已在问题 #1979 中报告
  • #2129 CosmosDiagnostics:修复了由保留所有诊断的分页库导致的内存泄漏。 已在 3.14.0 PR #1812 中引入且已在问题 #2087 中报告
  • #2103 查询:修复了 ORDER BY 未定义(和混合类型基元)的延续令牌支持。 已在 3.14.0 PR #1812 中引入
  • #2124 批量:修复了重试逻辑以处理由基础批处理请求过大导致的 RequestEntityTooLarge 异常。 已在 #741 中引入
  • #2198 CosmosClientOptions:修复了导致 ConsistentPrefix 转换为 BoundedStaleness 的 bug。 已在 3.1.0 PR #541 中引入且已在问题 #2196 中报告
  • #2262 CosmosException:修复了与 CosmosException 属性值不匹配的标头以及客户端初始化失败时的错误 SubStatusCode 值
  • #2269 PermissionProperties:修复了 PermissionProperties,使其不依赖于内部类型来修复模拟

3.17.0-preview1 - 2021-03-02

已添加

  • #2197 CosmosClient:添加了 CreateAndInitializeAsync 方法

固定

  • #2235 CosmosDiagnostics:修复了 ITrace JsonTraceWriter 以包含地址解析和存储响应统计信息。已通过 PR #2097 在 3.17.0-preview 中引入
  • #2236 CosmosDiagnostics:修复了查询操作缺少的 POCO 反序列化。
  • #2218(预览)ChangeFeed 拉取模型:修复了路径失败时缺少的标头。 已通过 PR #1933 在 3.15.0 中引入

3.17.0-preview - 2021-02-15

已添加

  • #1870 批处理 API:添加了会话令牌支持
  • #1952 & #1648(预览)Subpartitioning:添加对子分区的支持
  • #2122(预览)更改源:添加了全保真支持
  • #2145 EnableContentResponseOnWrite:通过 CosmosClientOptions 和 CosmosClientBuilder 添加了客户端级别支持
  • #2166 QueryRequestOption:添加了优化以避免重复 QueryRequestOption
  • #2097 & #2204 & #2213 CosmosDiagnostics:已重构为将 ITrace 用作默认实现
  • #2206 LINQ:添加了用户定义的函数翻译支持(感谢 dpiessens)
  • #2210 QueryDefinition:添加了 API 以获取查询参数(感谢 thomaslevesque)

固定

  • #2168 查询:修复了 Take 运算符中的回归,在该运算符中耗尽整个查询,而不是停止 Take 计数。 已在 3.14.0 PR #1812 中引入且已在问题 #1979 中报告
  • #2129 CosmosDiagnostics:修复了由保留所有诊断的分页库导致的内存泄漏。 已在 3.14.0 PR #1812 中引入且已在问题 #2087 中报告
  • #2103 查询:修复了 ORDER BY 未定义(和混合类型基元)的延续令牌支持。 已在 3.14.0 PR #1812 中引入
  • #2124 批量:修复了重试逻辑以处理由基础批处理请求过大导致的 RequestEntityTooLarge 异常。 已在 #741 中引入
  • #2198 CosmosClientOptions:修复了导致 ConsistentPrefix 转换为 BoundedStaleness 的 bug。 已在 3.1.0 PR #541 中引入且已在问题 #2196 中报告

3.16.0 - 2021-01-12

已添加

  • #2098 性能:添加网关标头优化
  • #1954 & #2094 控制面板热路径:添加了更严格的超时和重试逻辑,以便从网关中获取缓存和查询计划
  • #2013 更改源处理器:添加了对 EPK 租约的支持
  • #2016 性能:修复了锁争用并减少了 TCP 请求的分配
  • #2000 性能:添加了授权帮助程序改进

固定

  • #2110 CosmosException:修复了 substatuscode 以获取正确的值,而不是 0(在枚举中时)
  • #2092 查询:修复了对延迟 + 缓冲路径的取消令牌支持
  • #2099 & #2116 CosmosDiagnostics:通过添加并发操作支持来修复 IndexOutOfRangeException
  • #2096 AggregateException:修复了一些缓存调用以引发原始异常,而不是 AggregateException
  • #2044 查询:修复了 SqlParameter 类上的 Equals 方法
  • #2077 可用性:修复了 HttpException 上的重试行为,SDK 将在同一区域(而不是次要区域)中重试
  • #2056 性能:修复了查询操作的编码字符串性能
  • #2060 查询:修复了由 LINQ order by 操作中使用的 FeedRange 比较导致的 CPU 使用率过高。 已在 3.14.0 PR #1812 中引入
  • #2041 请求费用:修复了产品/服务和 CreateIfNotExists API 的请求费用

3.15.1 - 2020-12-16

固定

  • #2069 批量:修复了拆分时的错误路由
  • #2047 诊断:向摘要添加了操作名称
  • #2042 更改源处理器:修复了未正确应用的 StartTime。 已通过 PR #1725 在 3.13.0-preview 中引入
  • #2071 诊断:修复了记录内部 DocumentClientException 时的 substatuscode

3.15.0 - 2020-11-17

已添加

  • #1926 查询:为 c# 查询分析器添加了当服务互操作不可用时对 IN 子句中多个参数的支持。
  • #1933 ChangeFeed:添加了分页库的采用
  • #1943 性能:通过 LazyCosmosElement 缓存改进添加了查询优化
  • #1944 性能:添加直接版本以获取响应标头改进
  • #1947 ReadFeed:添加了分页库采用
  • #1949 性能:添加了优化的请求标头
  • #1974 性能:通过减少 TimerWheel 中的锁争用来添加批量优化
  • #1977 性能诊断:添加了静态计时器和缓存处理程序名称

固定

  • #1930 更改源:修复了估算器诊断
  • #1939 LINQ:通过 StringComparison 区分大小写修复了 ArgumentNullException(感谢 ylabade)
  • #1940 LINQ:修复了 CosmosLinqQuery.AggregateResultAsync 中的 CancellationToken bug(感谢 ylabade)
  • #1960 CosmosClientOptions 和 ClientBuilder:修复了在 HttpClientFactory 或 WebProxy 上设置 null 值时出现的 ArgumentException
  • #1961 RequestOption.Properties:修复了 CreateContainerIfNotExistsAsync 的 RequestOption.Properties
  • #1967 查询:修复了分页库中的 CancellationToken 逻辑
  • #1988 查询:修复了具有逻辑分区键的查询的拆分校对逻辑
  • #1999 性能:修复了未启用跟踪时的异常序列化
  • #2004 查询:修复了由于缓存未刷新而导致的 SplitHandling bug。 已在 3.14.0 PR #1812 中引入

3.15.2-preview - 2020-11-17

固定

  • #2004 查询:修复了由于缓存未刷新而导致的 SplitHandling bug。 已在 3.14.0 PR #1812 中引入

未列出 请参阅 #2004 - 3.15.1-preview - 2020-11-05

固定

  • #1972 个人预览版 Azure Active Directory:修复了 master 中的 TokenCredentialCache 超时逻辑和端口测试
  • #1984 个人预览版 Azure Active Directory:修复了使用错误范围值时出现的问题

未列出 请参阅 #2004 - 3.15.0-preview - 2020-10-21

已添加

  • #1944 性能:添加直接版本以获取响应标头改进
  • #1933 更改源:添加了可通过全新 EmitOldContinuationToken 迁移的全新延续令牌格式。
  • #1933 更改源:添加了在出现 304 错误时重试的功能,并且不再修改 HasMoreResults
  • #1926 查询:为 c# 查询分析器添加了当服务互操作不可用时对 IN 子句中多个参数的支持。
  • #1798 个人预览版 Azure Active Directory:向 SDK 添加了 Azure Active Directory 支持

固定

  • #1933 更改源:修复了未遵循值的 StartFrom bug

未列出 请参阅 #2004 - 3.14.0-preview - 2020-10-09

已添加

  • #1830 更改源估算器:增加了对每个租约的详细估算的支持

未列出 请参阅 #2004 - 3.14.0 - 2020-10-09

已添加

  • #1876 性能:添加了会话令牌优化
  • #1879 性能:添加了 AuthorizationHelper 改进
  • #1882 性能:添加了 SessionContainer 优化和样式修复
  • #1812 查询:添加了分页库的采用
  • #1920 查询:添加了 RegexMatch 系统函数支持

固定

  • #1875 HttpClient:修复了 WASM 中 HttpResponseMessage.RequestMessage 为 null 的问题
  • #1886 更改源处理器:修复了初始化过程中的故障
  • #1892 GatewayAddressCache:修复了在地址刷新路径上使用 HashSet 时导致 CPU 利用率过高的问题
  • #1909 授权:修复了在执行写入操作时引发 DocumentClientException 的问题
  • #1812 查询:修复了 MalformedContinuationTokenException。 已在 3.7.0 PR #1260 中引入且已在问题 #1364 中报告

3.13.0 - 2020-09-21

已添加

  • #1743 查询性能:添加了在已设置 FeedOptions.PartitionKey 时对非 Windows x64 系统上的非聚合单分区查询跳过“获取查询计划”的功能
  • #1768 性能:添加了 SessionToken 优化,以通过删除存储过程、触发器和 UDF 上用于 CRUD 的会话令牌来减小标头大小
  • #1781 性能:添加了标头优化,从而可减少响应分配(每个请求减少 10 KB)。
  • #1825 RequestOptions.Properties:为应用程序添加了指定请求上下文的功能
  • #1835 性能:添加了 HttpClient 优化以避免双重缓冲网关响应
  • #1837 查询 SystemFunctions:添加了日期/时间系统函数
  • #1842 查询性能:添加了单一实例 QueryPartitionProvider。 在重新创建容器时提供帮助。
  • #1857 性能:在一些位置添加了终结器优化(向 pentp 致谢)
  • #1843 性能:添加了 Transport 序列化、SessionTokenMismatchRetryPolicy 和存储响应字典优化

固定

  • #1757 Batch API:修复大小限制以减少超时
  • #1758 连接性:修复使用 EnableTcpConnectionEndpointRediscovery 时的地址解析调用
  • #1788 暂时性 HTTP 异常:将重试逻辑添加到所有 http 请求
  • #1863 HttpClientHandler:修复了 HttpClientHandler PlatformNotSupportedException

3.13.0-preview - 2020-08-12

已添加

  • #1725 ChangeFeed:添加 ChangeFeedStartFrom 以支持 StartTimes x FeedRanges。 警告:对于预览版 SDK 而言,这是一个中断性变更
  • #1764 性能:添加编译器优化标志
  • #1768 SessionToken:通过删除存储过程、触发器和 UDF 上用于 CRUD 的会话令牌,添加优化以减小标头大小

固定

  • #1757 Batch API:修复大小限制以减少超时
  • #1758 连接性:修复使用 EnableTcpConnectionEndpointRediscovery 时的地址解析调用

3.12.0 - 2020-08-06

已添加

  • #1548 传输:添加优化以统一所有网关类的 HttpClient 使用
  • #1569 Batch API:为“事务批处理”添加请求选项支持
  • #1693 性能:减少 GlobalAddress 冲突解决程序上的锁争用
  • #1712 性能:添加优化以减少 AuthorizationHelper 内存分配
  • #1715 可用性:针对暂时性连接问题添加跨区域重试机制
  • #1721 LINQ:添加对不区分大小写的搜索的支持(通过 jeffpardy)
  • #1733 更改源处理器:添加租用存储的后向兼容性

固定

  • #1548 可用性:修复了 SDK 故障转移逻辑。 HttpClient 对元数据请求使用用户配置的请求超时,从而导致不明确的 OperationCanceledException,而不是用于触发故障转移的 HttpRequestException。
  • #1720 网关跟踪:修复将 ActivityId 设置为 Guid.Empty 的 bug
  • #1728 诊断:通过将 ActivityScope 移动到操作级别来修复它
  • #1740 连接限制:修复 .NET core 以遵循网关连接限制
  • #1744 传输:修复 PortReuseMode 和其他直接配置设置的使用问题

3.11.1-preview - 2020-10-01

  • #1892 性能:通过减少 HashSet 锁争用,修复了由 EnableTcpConnectionEndpointRediscovery 导致的 CPU 利用率过高的问题

3.11.0 - 2020-07-07

3.11.0-preview - 2020-07-07

已添加

  • #1587 & 1643 & 1667 诊断:向所有请求添加了同步上下文跟踪
  • #1617 性能:修复了对象模型层次结构,以将字符串用于相对路径而不是 URI
  • #1639 CosmosClient:添加了针对空键的参数检查,以防止出现不明确的“401 未经授权”异常
  • #1640 批量操作:向批量操作添加了 TimerWheel 以改进延迟
  • #1678 自动缩放:添加到容器生成器

已修复

  • #1638 文档:修复了所有示例:为 FeedIterator 添加 using 语句
  • #1666 CosmosOperationCanceledException:修复了处理程序,可以捕获所有“操作已取消”异常
  • #1682 性能:修复了 EnableTcpConnectionEndpointRediscovery 导致的 CPU 使用率过高问题

3.10.1 - 2020-06-18

  • #1637 TransportHandler:删除了堆栈跟踪输出。 已在 3.10.0 PR 1587 中引入

3.10.0 - 2020-06-18

已添加

  • #1613 查询 FeedIterator:添加了 IDisposable 来修复内存泄漏。 警告:这将需要进行更改以修复用于检查处置的静态分析工具。
  • #1550 CosmosOperationCanceledException:这使用户能够访问通过取消标记取消操作时的诊断。 新类型扩展了 OperationCanceledException,因此它没有破坏当前的异常处理,并且在 ToString() 中包括了 CosmosDiagnostic。
  • #1578 查询:添加了内存优化以防止复制缓冲区
  • #1578 查询:添加了支持来忽略 ContainsStartsWith 函数的案例。
  • #1602 诊断:向所有操作添加了 CPU 使用率
  • #1603 文档:添加了新的异常处理文档

固定

  • #1530 ContainerDefinition:修复了 WithDefaultTimeToLive 参数拼写(感谢 tony-xia)
  • #1547 & #1582 查询和 Readfeed:修复了由于未正确处理拆分而导致的异常
  • #1578 ApplicationRegion:修复了 ApplicationRegion 以确保故障转移方案使用正确的顺序
  • #1585 查询:使用 QueryExecutionInfo 响应头修复了 Multi- ORDER BY 继续标记支持

3.9.1 - 2020-05-19

3.9.1-preview - 2020-05-19

已修复

  • #1539 CosmosException 和诊断:修复了 ToString(),使其不因重试而呈指数增长。 通过 PR #1189 在 3.7.0 中引入。

3.9.0 - 2020-05-18

已添加

  • #1356 & #1407 & #1428 & #1407 添加了自动缩放支持。
  • #1398 诊断:针对 .NET Core 添加了 CPU 监视。
  • #1441 传输:在 CosmosClientOptions 上添加了 HttpClientFactory 支持。
  • #1457 容器:向容器添加了数据库引用。
  • #1455 序列化程序:向 Client.ClientOptions.Serializer 添加了 SDK 序列化程序。
  • #1397 CosmosClientBuilder:添加了首选区域和 WithConnectionModeDirect()
  • #1439 响应中无内容:增加了让操作不从 Azure Cosmos DB 返回内容的功能。
  • #1398 & #1516 读取源和更改源:增加了序列化优化,使内存和 CPU 使用率降低高达 90%。 对象现在作为数组传递给序列化程序。
  • #1516 查询:增加了序列化优化,使内存使用率降低高达 50%,使 CPU 使用率降低高达 25%。 对象现在作为数组传递给序列化程序。

固定

  • #1401 & #1437:响应类型:修复了使用 Response.Container 时在包含 SynchronizationContext 的场景中出现的死锁。
  • #1445 传输:修复了 WebAssemblyServicePoint
  • #1462 UserAgent:修复了功能使用情况跟踪。
  • #1469 诊断:修复了 InvalidOperationException 并将运行时间转换为毫秒。
  • #1512 PartitionRoutingHelper:修复了由于容器缓存未命中而导致的 ReadFeed ArgumentNullException
  • #1530 CosmosClientBuilder:修复了 WithDefaultTimeToLive 参数拼写。

3.9.0-preview3 - 2020-05-11

已添加

  • #1356 & #1407 & #1428 自动缩放预览版。
  • #1407 自动缩放:添加了 CreateDatabaseIfNotExistsAsyncCreateContainerIfNotExistsAsync 方法。
  • #1410 FeedRange:添加了 Json 序列化支持。
  • #1398 诊断:针对 .NET Core 添加了 CPU 监视。
  • #1441 传输:在 CosmosClientOptions 上添加了 HttpClientFactory 支持。
  • #1457 容器:向容器添加了数据库引用。
  • #1453 响应工厂:向公共 API 添加了一个响应工厂。
  • #1455 序列化程序:向 Client.ClientOptions.Serializer 添加了 SDK 序列化程序。
  • #1397 CosmosClientBuilder:添加了首选区域和公共内部函数 WithConnectionModeDirect()
  • #1439 响应中无内容:增加了让操作不从 Azure Cosmos DB 返回内容的功能。
  • #1469 诊断:修复了 InvalidOperationException 并将运行时间转换为毫秒。

已修复

  • #1398 降低了查询反序列化的内存分配。
  • #1401 & #1437:响应类型:修复了使用 Response.Container 时在包含 SynchronizationContext 的场景中出现的死锁。
  • #1445 传输:修复了 WebAssembly 的 ServicePoint
  • #1462 UserAgent:修复了功能使用情况跟踪。

3.9.0-preview - 2020-04-17

已添加

  • #1356 自动缩放:已添加到公共预览版

3.8.0-preview - 2020-04-16

已添加

  • #1331 为事务性批处理请求启用了客户端加密/解密

已修复

  • #1369 修复了“order by”查询结果的解密

3.8.0 - 2020-04-07

已添加

  • #1314 添加了用于主动 TCP 连接端检测的配置。
  • #1305 添加了对首选区域自定义的支持。

固定

  • #1312 修复了使用 default(PartitionKey) 时的空引用。
  • #1296 在返回查询结果之前解密已加密的属性。
  • #1345 修复了获取查询计划诊断。

3.7.1-preview - 2020-03-30

  • #1210 添加了更改源拉取模型。
  • #1242 客户端加密 - 修复了不含已加密属性的读取路径中的 bug。
  • #1314 添加了用于主动 TCP 连接端检测的配置。
  • #1312 修复了使用 default(PartitionKey) 时的空引用。
  • #1296 在返回查询结果之前解密已加密的属性。

3.7.0 - 2020-03-26

已添加

  • #1268CosmosDiagnostics 添加了 GetElapsedClientLatency
  • #1239 使 MultiPolygonPolygonCoordinates 类成为公共类。
  • #1233 分区键现在支持使用运算符 ==, != 进行等式比较。
  • #1285 向诊断添加了查询计划检索。
  • #1289 查询 ORDER BY 恢复优化。
  • #1074 批量操作 API 拥塞控制。

固定

  • #1213 CosmosException 现在返回原始堆栈跟踪。
  • #1213 ResponseMessage.ErrorMessage 现在始终会正确进行填充。 过去存在一个 bug,在某些场景下,错误消息会留在内容流中。
  • #1298 CosmosException.Message 包含与 CosmosException.ToString() 相同的信息以确保跟踪所有信息。
  • #1242 客户端加密 - 修复了不含已加密属性的读取路径中的 bug。
  • #1189 查询诊断显示正确的总体时间。
  • #1189 修复了在诊断上下文中导致重复信息的一个 bug。
  • #1263 修复了以下 bug:未在查询流响应上设置间隔后重试。
  • #1198 修复了调用已处理的 CosmosClient 时出现的空引用异常。
  • #1274 调用引用已处理客户端的所有 SDK 对象(例如数据库和容器)时引发 ObjectDisposedException
  • #1268 修复了 Database.ReadStreamAsyncDatabase.DeleteStreamAsync 方法的请求选项丢失的 bug。
  • #1304 修复了 XML 文档,使其现在可在 Visual Studio 中显示。

3.7.0-preview2 - 2020-03-09

  • #1210 更改源拉取模型。
  • #1242 客户端加密 - 修复了不含已加密属性的读取路径中的 bug。

3.7.0-preview - 2020-02-25

  • #1074 批量操作 API 拥塞控制。
  • #1210 更改源拉取模型。

3.6.0 - 2020-01-23

  • #1105 CosmosClient 不变性 + 可处理项修复

已添加

  • #1097ContainerProperties 添加了 GeospatialConfig,向 SpatialPath 添加了 BoundingBoxProperties
  • #1061ExecuteStoredProcedureStreamAsync 添加了流有效负载。
  • #1062 添加了更多诊断信息,包括通过不同的 SDK 层跟踪时间的功能。
  • #1107 源链接支持。
  • #1121 StandByFeedIterator 广度优先读取策略。

固定

  • #1105 自定义序列化程序不再调用 SDK 拥有的会导致序列化异常的类型。
  • #1112 修复了 DatabaseProperties 之类的 SDK 属性,使其具有相同的 JSON 特性。
  • #1116 修复了执行异步查询操作时在包含 SynchronizationContext 的场景中出现的死锁。
  • #1143 修复了通过资源令牌针对特定分区键执行查询时出现的权限资源链接和授权问题。
  • #1150 修复了使用不存在的租赁容器时的 NullReferenceException

3.5.1 - 2019-12-11

已修复

  • #1060 修复了 DISTINCT 查询中的 Unicode 编码 bug。
  • #1070 在重新创建集合的情况下,CreateItem 将仅针对自动提取的分区键进行重试。
  • #1075 针对具有大型标头的错误请求包括了标头大小详细信息。
  • #1078 修复了执行异步 SDK API 时在包含 SynchronizationContext 的场景中出现的死锁。
  • #1081 修复了序列化程序中由空引用异常导致的争用条件。
  • #1086 修复了 TransactionalBatch 代码路径上可能的 NullReferenceException
  • #1091 修复了进行分区拆分时查询中会引发 NotImplementedException 的一个 bug。
  • #1089 修复了在不使用分区键的情况下对项目使用批量操作时的 NullReferenceException

3.5.0 - 2019-12-03

已添加

  • #979 使 QueryRequestOptions 上的 SessionToken 成为公共的。
  • #995 在诊断中包括了会话令牌。
  • #1000CosmosClientOptions 添加了 PortReuseMode
  • #1017 向网关调用添加了 ClientSideRequestStatistics 并使结束时间可为空。
  • #1038 向资源属性添加了自链接。

已修复

  • #921 修复了在某些情况下保留堆栈跟踪所需的错误处理。
  • #944 对于内部操作,更改源处理器不使用用户序列化程序。
  • #988 修复了由于重试用完/名称缓存过时而导致的查询变异。
  • #954 在多主帐户中,支持对更改源处理器使用“从头开始”功能。
  • #999 修复了抓取额外页面的问题,更新了异常路径上的继续标记,并修复了 order by 继续标记中的非 ASCII 字符。
  • #1013 网关 OperationCanceledExceptions 现在作为请求超时返回。
  • #1020 直接更新包会删除 debug 语句。
  • #1023 修复了 ThroughputResponse.IsReplacePending 标头映射。
  • #1036 修复了查询响应,以在失败时返回 null 内容。
  • #1045CosmosException 添加了堆栈跟踪和内部异常。
  • #1050TransactionalBatchOperationResult 添加了模拟构造函数。

3.4.1 - 2019-11-06

已修复

  • #978 修复了针对 FeedIterator 和响应类的模拟。

3.4.0 - 2019-11-04

已添加

  • #853 ORDER BY 数组和对象支持。
  • #877 查询诊断现在包含客户端请求诊断信息。
  • #923 批量操作支持现在为公共版。
  • #922 在用户代理中包括了批量操作支持使用情况信息。
  • #934GROUP BY 查询中保留了投影的顺序。
  • #952 ORDER BY 未定义和混合类型 ORDER BY 支持。
  • #965 Batch API 现在为公共版。

固定

  • #901 修复了导致查询响应为每个内容调用创建新流的一个 bug。
  • #918 修复了用于与脚本、权限和冲突相关的迭代器的序列化程序。
  • #936 修复了包含大型资源的批量请求以使异常自然化。

3.3.3 - 2019-10-30

  • #837 修复了非 Windows 平台的分组依据 bug。
  • #927 修复了返回部分结果而非错误的查询。

3.3.2 - 2019-10-16

已修复

  • #905 修复了 LINQ 驼峰式大小写 bug。

3.3.1 - 2019-10-11

已修复

  • #895 修复了在非 Windows 平台上导致格式异常的用户代理 bug。

3.3.0 - 2019-10-09

已添加

  • #801 启用了 OrderBy 后的 LINQ ThenBy 运算符。
  • #814 仅限使用已配置终结点的功能。
  • #822 GROUP BY 查询支持。
  • #844 向容器生成器添加了 PartitionKeyDefinitionVersion

固定

  • #835 修复了导致排序后范围异常的一个 bug。
  • #846 统计信息在 CosmosException 中未正确填充。
  • #857 修复了批量操作支持在容器实例之间的可重用性。
  • #860 修复了基础用户代理字符串。
  • #876 默认连接超时从 60 秒减少到 10 秒。

3.2.0 - 2019-09-17

已添加

  • #100CosmosClientOptions 添加了可配置的 Tcp 设置。
  • #615#775 向响应添加了请求诊断。
  • #622 添加了针对用户和权限的 CRUD 和查询操作,这启用了 ResourceToken 支持。
  • #716 添加了在 LINQ 查询生成时会启用的驼峰式大小写序列化。
  • #729#776 针对 LINQ 查询添加了 aggregate(CountAsync/SumAsync 等)扩展。
  • #743CosmosClientOptions 添加了 WebProxy

固定

  • #726 当遇到异常时,查询迭代器 HasMoreResults 现在返回 false。
  • #705 用户代理后缀被截断。
  • #753 冲突异常的原因未传播。
  • #756WithStartTime 的更改源处理器在第一次执行委托时将不使用任何项。
  • #761 当使用自定义任务计划程序(例如 Orleans)时,CosmosClient 发生死锁。
  • #769 会话一致性和网关模式会话-令牌 bug 修复 - 几个罕见的非成功案例会话令牌可能不正确。
  • #772 修复了在使用自定义序列化程序的情况下或产品/服务不存在的情况下引发的吞吐量异常。
  • #785 错误的键引发状态代码为 HttpStatusCode.UnauthorizedCosmosExceptions

3.2.0-preview2 - 2019-09-10

  • #585#741 批量操作执行支持。
  • #427 事务性批处理支持(项 CRUD)。

3.2.0-preview - 2019-08-09

  • #427 事务性批处理支持(项 CRUD)。

3.1.1 - 2019-08-12

已添加

  • #650 添加了 CosmosSerializerOptions 以自定义序列化。

固定

  • #612 修复了具有分区键的 ReadFeed 的 bug。
  • #614 修复了空间路径序列化以及与较旧索引版本的兼容性。
  • #619 修复了 .NET Framework 的 PInvokeStackImbalance 异常。
  • #626 对于成功的情况,FeedResponse<T> 状态代码现在返回 OK 而非无效的状态代码 0 或 Accepted。
  • #629 修复了 CreateContainerIfNotExistsAsync 验证,使其仅限于分区键路径。
  • #630 修复了用户代理以包含环境和包信息。

3.1.0 - 2019-07-29 - 未列出

已添加

  • #541 向客户端和查询选项添加了一致性级别。
  • #544 为 LINQ 添加了继续标记支持。
  • #557 向项请求选项添加了触发器选项。
  • #572CreateContainerIfNotExistsAsync 上添加了分区键验证。
  • #581QueryDefinition API 添加了 LINQ。
  • #592 向容器生成器添加了 CreateIfNotExistsAsync
  • #597ResponseMessage 添加了继续标记属性。
  • #604 添加了 LINQ ToStreamIterator 扩展方法。

固定

  • #548 修复了 CosmosException.ToString() 中错误键入的消息。
  • #558 修复了位置缓存 ConcurrentDict 锁争用。
  • #561 GetItemLinqQueryable 现在可以处理 null 查询。
  • #567 查询可以正确处理不同的语言区域性。
  • #574 修复了查询分析因意外异常而失败时的空错误消息。
  • #576 查询将输入正确地序列化为流。

3.0.0 - 2019-07-15

  • .NET SDK 版本 3.0.0 正式发布。
  • 适用于 .NET Standard 2.0,此版本支持 .NET Framework 4.6.1+ 和 .NET Core 2.0+。
  • 新对象模型,顶级的 CosmosClient 和方法在相关的数据库和容器类之间进行拆分。
  • 具有高性能的新流 API。
  • 对更改源处理器 API 提供了内置支持。
  • 适用于 CosmosClient、容器和更改源处理器的 Fluent 生成器 API。
  • 惯用的吞吐量管理 API。
  • 适用于数据库、容器、项、查询和吞吐量请求的粒度化 RequestOptionsResponseTypes
  • 缩放未分区容器的功能。
  • 可扩展和可自定义的序列化程序。
  • 支持自定义处理程序的可扩展请求管道。

发布和停用日期

Azure 会在停用 SDK 时至少提前 12 个月发出通知,以便用户顺利转换为更高版本/受支持版本。 新特性和功能以及优化仅添加到当前 SDK,因此建议始终尽早升级到最新的 SDK 版本。

2022 年 8 月 31 日 之后,Azure Cosmos DB 将不再进行 bug 修复,不再添加新功能,也不再支持 1.x 版的 Azure Cosmos DB .NET 或 .NET Core SDK for SQL API。 如果你不想升级,则从 1.x 版 SDK 发送的请求将继续由 Azure Cosmos DB 服务处理。

版本 发布日期 停用日期
3.6.0 2020 年 1 月 23 日 ---
3.5.1 2019 年 12 月 11 日 ---
3.5.0 2019 年 12 月 3 日 ---
3.4.1 2019 年 11 月 6 日 ---
3.4.0 2019 年 11 月 4 日 ---
3.3.3 2019 年 10 月 30 日 ---
3.3.2 2019 年 10 月 16 日 ---
3.3.1 2019 年 11 月 8 日 ---
3.3.0 2019 年 10 月 8 日 ---
3.2.0 2019 年 9 月 18 日 ---
3.1.1 2019 年 8 月 12 日 ---
3.1.0 2019 年 7 月 29 日 ---
3.0.0 2019 年 7 月 15 日 ---

常见问题

1.如何向客户通知即将停用的 SDK?

Azure 会在即将停用的 SDK 的支持结束之前提前 12 个月进行通知,以便协助平稳地转换到支持的 SDK。 此外,会通过各种通信渠道(Azure 管理门户、开发人员中心、博客文章以及与分配的服务管理员的直接通信)来通知客户。

2.在这 12 个月期间,客户是否可以使用“即将”停用的 Azure Cosmos DB SDK 来创作应用程序?

可以,客户在 12 个月宽限期内具有完全访问权限,可以使用“即将”停用的 Azure Cosmos DB SDK 创作、部署和修改应用程序。 在 12 个月宽限期内,建议客户根据相应情况迁移到支持的较新版本 Azure Cosmos DB SDK。

3.在 12 个月通知期之后,客户是否可以使用已停用的 Azure Cosmos DB SDK 创建和修改应用程序?

在 12 个月通知期之后,SDK 会停用。 Azure Cosmos DB 平台不允许使用已停用 SDK 的应用程序对 Azure Cosmos DB 进行任何访问。 此外,Azure 不会对已停用的 SDK 提供客户支持。

4.如果客户运行使用不支持的 Azure Cosmos DB SDK 版本的应用程序,会发生什么情况?

任何使用已停用 SDK 版本连接 Azure Cosmos DB 服务的尝试都会被拒绝。

5.新特性和功能是否会适用于所有未停用的 SDK?

新特性和功能只添加到新版本。 如果使用的是未停用的旧版本 SDK,则对 Azure Cosmos DB 进行的请求仍会与以前一样正常工作,但是你无法访问任何新功能。

6.如果无法在截止日期之前更新应用程序,该怎么办?

我们建议尽早升级到最新 SDK。 SDK 标记为要停用之后,会有 12 个月来更新应用程序。 如果由于任何原因而无法在此时间范围内完成应用程序更新,请在截止日期之前与 Cosmos DB 团队联系并请求其帮助。

另请参阅

若要了解有关 Cosmos DB 的详细信息,请参阅 Azure Cosmos DB 服务页。