用途
本资料介绍 EF Core 的 Azure Cosmos DB 提供程序的实现细节,供在修改 Cosmos 相关代码时参考。该提供程序属于非关系型提供程序,具有独立的并行查询管道,并使用 JSON 进行文档物化。
主要能力与关键差异
与关系型提供程序相比,Cosmos DB 提供程序存在以下关键差异:
- 不使用迁移,改用 EnsureCreated()。
- 文档以 JSON 形式存储,拥有类型和复杂类型会成为嵌入对象。
- 为提升性能,需要配置分区键。
- 使用 ETag 实现乐观并发。
- 不支持跨容器联接。
使用方式与测试环境
在测试方面,当未设置 Test__Cosmos__DefaultConnection 时,TestEnvironment.InitializeAsync() 会自动启动一个 Testcontainers.CosmosDb 容器。也可以设置该环境变量,以使用现有的模拟器。
对于 Linux 模拟器上不支持的功能,可以使用 [ConditionalFact(typeof(CosmosTestEnvironment), nameof(CosmosTestEnvironment.IsNotLinuxEmulator))] 跳过相关测试。
适用场景
适用于需要了解或修改 EF Core Azure Cosmos DB 提供程序内部实现、查询管道、文档物化、分区键配置、并发控制以及测试环境搭建的开发场景。
限制
资料未提供关于收费、价格、平台支持范围、性能效果或具体使用步骤的更多信息,这些内容暂未提供。