使用 .Net Core SDK 在 CosmosDB 中创建文档时,可以选择禁用自动生成文档 ID。这将允许开发人员为属性设置自己的值,id
如果未设置,则会引发异常。
例如,这两种方法都显示在这里:
public class CosmosExample
{
private readonly IDocumentClient _docClient;
private Uri _collectionUri;
public CosmosExample(IDocumentClient docClient)
{
_docClient = docClient;
_collectionUri = UriFactory.CreateDocumentCollectionUri("MyDatabase", "MyCollection");
}
public async Task CreateWithId(DataModelWithId model)
{
model.id = Guid.NewGuid();
var result = await _docClient.CreateDocumentAsync(_collectionUri, model, disableAutomaticIdGeneration: true);
}
public async Task CreateAutoId(DataModel model)
{
var result = await _docClient.CreateDocumentAsync(_collectionUri, model);
}
}
public class DataModelWithId
{
public Guid id { get; set; }
public string Name { get; set; }
}
public class DataModel
{
public string Name { get; set; }
}
我正在编写一个创建大量文档的应用程序,我想优化吞吐量和 RU(请求单元)成本。
禁用自动 ID 生成并改为在代码中生成 ID 是否有益于性能或成本?