Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure Cosmos DB(EF/Core)-驼峰案例属性名称_C#_Json_Entity Framework_Azure Cosmosdb - Fatal编程技术网

C# Azure Cosmos DB(EF/Core)-驼峰案例属性名称

C# Azure Cosmos DB(EF/Core)-驼峰案例属性名称,c#,json,entity-framework,azure-cosmosdb,C#,Json,Entity Framework,Azure Cosmosdb,我有一个.NET Core 3.1 API项目,该项目通过实体框架(Microsoft.EntityFrameworkCore.Cosmos-v3.1.5)处理Cosmos DB存储 我有一个数据库模型: [JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))] public class BikeRental { [JsonProperty(PropertyName = "id")]

我有一个.NET Core 3.1 API项目,该项目通过实体框架(Microsoft.EntityFrameworkCore.Cosmos-v3.1.5)处理Cosmos DB存储

我有一个数据库模型:

[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
public class BikeRental
{
    [JsonProperty(PropertyName = "id")]
    [Key]
    public Guid Id { get; set; }

    [JsonProperty(PropertyName = "bikeId")]
    public string BikeId { get; set; }

    [JsonProperty(PropertyName = "shopId")]
    public string ShopId { get; set; }
}
保存到CosmosDB数据库后,将使用类属性名称序列化列,忽略“PropertyName”属性。例如,如果'bikeId'更改为'testBikeId',它仍然被写为'bikeId'

{
    "Id": "192dfdf4-54cb-4290-a478-7035518983ca",
    "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
}
任何关于如何解决此问题的帮助或建议都将不胜感激

编辑: 通过以下方式将对象保存到Cosmos:

var response = _context.BikeRentals.Add(obj)
_context.SaveChanges();

对于EF映射,请使用ColumnAttribute或OnModelCreating中的fluent配置

对于Cosmos,您可能希望数据库中的名称与序列化以发送到客户端时的名称相同,但在一般情况下,实体映射到数据库的方式可能不同于JSON序列化


您应该使用并迭代所有实体类型和属性,并将Pascal应用于Camel Case转换。

如何序列化?序列化由实体框架执行。因此,将对象添加到相关上下文时会发生这种情况。我已经编辑了原始帖子以包含这些信息。谢谢你,大卫。在OnModelCreating中添加一个转换已经起作用了。David,很抱歉回到这里。然而,尽管我现在已经在你的推荐下成功地实现了这一点,但我遇到了一个进一步的问题。将属性声明为Id,然后将其正确映射到“Id”。但是,出于某种原因,Cosmos会将类类型添加到ID中吗?e、 g.“id”:“BikeRental | 01f7be19-4f0f-44d1-9fa9-721195cf2d45”,