Azure Cosmos DB(EF / Core)-ID列包含类名称

时间:2020-06-25 07:10:40

标签: c# json entity-framework azure-cosmosdb

我有一个.NET Core 3.1 API项目,该项目具有通过Entity Framework (Microsoft.EntityFrameworkCore.Cosmos-v3.1.5)处理的Cosmos数据库存储。

我有一个数据库模型:

public class BikeRental
{
    [Key] public Guid Id { get; set; }
    public string BikeId { get; set; }
    public string ShopId { get; set; }
}

然后我有了一个流畅的配置,该配置将实体名称映射到驼峰大小写:

  protected override void OnModelCreating(ModelBuilder modelBuilder)
        {

            foreach (var entity in modelBuilder.Model.GetEntityTypes())
            {
                foreach (var property in entity.GetProperties())
                {
                    var camel = Char.ToLowerInvariant(property.Name[0]) + property.Name.Substring(1);
                    property.SetPropertyName(camel);
                    property.SetColumnName(camel);

                }
            }
}

保存到Cosmos后,“ id”现在包含BikeRental的类名称:

    {
    "id": "BikeRental|0042a855-0473-41d3-a344-49af808a0ffd",
    "bikeId": "eb65b93b-17d3-4829-9729-d48c029211fe2",
    "shopId": "636c08c4-600d-458a-98b7-8d312b8c18d2",

    "_rid": "2QZIAMVYbVQBAAAAAAAAAA==",
    "_self": "dbs/2QZIAA==/colls/2QZIAMVYbVQ=/docs/2QZIAMVYbVQBAAAAAAAAAA==/",
    "_etag": "\"00000000-0000-0000-4627-f721b0e701d6\"",
    "_attachments": "attachments/",
    "_ts": 1592564051
    }

如果我将模型更改为小写id(而不是id),记录将按我的期望写入Cosmos:

{
    "id": "ec86b971-b305-4055-b29f-8a4a7c5bf125",
    "bikeId": "eb65b93b-17d3-4829-9729-d48c029211fe2",
    "shopId": "636c08c4-600d-458a-98b7-8d312b8c18d2",

    "_rid": "2QZIAMVYbVQBAAAAAAAAAA==",
    "_self": "dbs/2QZIAA==/colls/2QZIAMVYbVQ=/docs/2QZIAMVYbVQBAAAAAAAAAA==/",
    "_etag": "\"00000000-0000-0000-4627-f721b0e701d6\"",
    "_attachments": "attachments/",
    "_ts": 1592564051
}

如果对解决此问题有任何帮助或建议,将不胜感激!

0 个答案:

没有答案