我需要为给定实体的每个记录生成唯一的标识符。我正在使用Cosmos DB,其中一个集合可以容纳多种文档类型(实体)。 使用Cosmos DB提供程序EF Core,我用新的/更新的数据更新了这些集合,它们在EF Core为我的实体的ID字段生成漂亮的GUID的情况下都运行得很顺利。
现在,由于某些实体参与了与客户的沟通,因此我需要一种方法来为每个实体生成“友好的”唯一编号。一个例子是遵循特定格式的帐号,例如YYYY-######(例如2019-000001)。
此格式是按实体类型定义的,唯一性是: -每个实体类型(在文档中是一个字段) -每个集合
在保存实体时,如何配置EF Core以使用自定义数字格式生成器?我正在考虑的一种方法是在Cosmos中创建UDF,该UDF根据格式生成数字,但是我担心保存后需要重新查询文档,因为EF Core将不了解该字段。
答案 0 :(得分:0)
也许您可以使用自定义生成的ID添加一个字段,在CosmosDB中为其添加索引,然后使用它。这样的解决方案将很快实现,并且您不会遇到EF Core的问题。
第二个选项是使用字符串而不是Guid并手动创建ID。但是我不确定EF Core是否已经支持这种映射。您可以尝试在protected override void OnModelCreating(ModelBuilder modelBuilder)
我想到的最后一个选择是创建Guid,它将满足您的要求并开始(或包含)所需的号码。像:20190000-2629-478a-be9e-bc596f2e85c2
。但是我不确定这是否是个好主意