我们正在创建基于 .Net core 7 的 CRUD 操作 API。数据库是 Azure NoSQL cosmos db。我们正在使用 CosmosClient。
我们的API现在稳定了。
我们希望确保 api 中的任何新更改不会影响现有架构。我们愿意锁定现有架构。容器中的所有记录都具有相同的架构。我们可以锁定架构吗?因此新 API 的更改即使意外也无法更改数据库记录模式。
不是通过服务。 Cosmos DB 是无模式的。
但是,您可以在客户端将架构验证作为应用程序代码的一部分引入。
可与
CosmosClient
一起使用的示例处理程序: https://github.com/Azure/azure-cosmos-dotnet-v3/blob/master/Microsoft.Azure.Cosmos.Samples/Usage/Handlers/SchemaValidationHandler.cs
它让您定义一个模式:
var myContainerSchema = JSchema.Parse(@"{
'type': 'object',
'properties': {
'name': {'type': 'string'}
},
'required': ['name']
}");
您可以将其添加到
CosmosClientOptions.CustomHandlers
:
CosmosClientOptions options = new();
//set other options
options.CustomHandlers.Add(new SchemaValidationHandler((database: "mydb", container: "mycoll2", schema: myContainerSchema)));