【发布时间】:2020-09-21 12:58:32
【问题描述】:
假设我要创建如下文档
{
"Id": "6a23a5f3-0f77-40a9-b9f9-26e88537a962",
"CarHistory": [
{ "model":"ford", "price": 100, "kilometers": 100 "current": true },
{ "model":"ford", "price": 200, "kilometers": 200, "current": false },
]
}
在 Poco 中,我猜该模型可能看起来像以下几行:
public class Document
{
public Guid Id { get; set; }
}
public class Car : Document
{
public string Model {get; set;}
public decimal Price {get; set;}
public int Kilometers {get; set;}
public bool Current {get; set;}
}
所以稍后我创建..
public class MasterCar : Document
{
public ICollection<Car> CarHistory { get; set; } = new List<Car>();
}
调试时似乎一切正常: 我在某处以编程方式创建 Guid,例如:
var masterCar = new MasterCar(){ Id = Guid.NewGuid() }
但是当我去 cosmos db 模拟器和 SELECT * FROM 时,我检查了 Id 属性,它的值是:
"id": "00000000-0000-0000-0000-000000000000",
有人可以指出我做错了什么吗?或者这应该如何完成,我读到 您不应该自己提供 Id,但是我怎样才能以编程方式访问 Id 属性呢? 例如:
CarService.GetById(Car.Id); //Id property doesnt exist if there is no property in poco
【问题讨论】:
-
Cosmos(或可能是 EF cosmos 驱动程序)创建它自己的“id”字段,这与您通常在 EF 类中找到的“Id”字段无关。我们的数据库有
Id和id字段。 -
@Neil 这不是真的,您可以为
id提供您自己的值。 @Rodrigo,请显示由您的代码创建的项目的完整示例,如模拟器中所示? -
这对我的项目@NoahStahl 来说是真的!
标签: c# azure azure-cosmosdb azure-cosmosdb-sqlapi