【发布时间】:2020-10-12 04:56:57
【问题描述】:
我有一个 .NET Core 3.1 API 项目,它通过 Entity Framework (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();
【问题讨论】:
-
你是怎么序列化的?
-
实体框架正在执行序列化。因此,在将对象添加到相关上下文时会发生这种情况。我已编辑原始帖子以包含此信息。
标签: c# json entity-framework azure-cosmosdb