我在使用 ORM Entity Framework Core 3.1 查询 Cosmos DB 时遇到问题
我的情况是这样的:
我有一个类,它有一个 ID 和一个对象列表(为了内部安全,我什至不能显示模型的名称,所以我们将第一个类称为 Items):
public class Model
{
public Guid DeviceId { get; set; }
public List<Items> Items { get; set; }
}
Items 类有不同的字段,最后一个字段有一个对象列表:
public class Items
{
//fields..
public List<SubItem> SubItems {get; set;}
}
public class SubItem
{
public int field1 { get; set; }
public int field2 { get; set; }
public string field3 { get; set; }
public string field4 { get; set; }
public double field5 { get; set; }
}
在我的 CosmosDB 中,我有以下映射特定文档的 json:
{
"DeviceId": "123456789",
"Items": [
{
//fields...,
"SubItems": [
{
"field1": 1,
"field2": 6,
"field3": "blabla",
"field4": "blabla",
"field5": 100936000
},
...
]
}
],
"id": "blablabla"
}
现在,我已经在我的 ApplicationDbContext 中配置了所有拥有的实体,并且我有一行映射这个“关系”如下:
public class ApplicationDbContext
{
public DbSet<Model> Models{ get; set; }
modelBuilder.HasDefaultContainer("Models");
modelBuilder.Entity<Model>().ToContainer("Models");
modelBuilder.Entity<Model>().HasKey(lr => lr.DeviceId);
modelBuilder.Entity<Model>(lr =>
{
lr.HasNoDiscriminator();
lr.OwnsMany(o => o.Items, na =>
{
na.OwnsMany(o => o.SubItems, na =>
{
na.ToJsonProperty("SubItems");
});
});
});
}
然后在我的存储库中,当我想查询数据库以搜索具有设备 ID 的特定设备时,我调用了这个简单的方法:
Model model = await _context.Models.FirstOrDefaultAsync(m => m.DeviceId == deviceID);
现在的问题是,模型内部的所有字段都被映射除了对于 List<SubItems> SubItems
我已经尝试了一切,我的意思是一切,但我总是得到空作为回报。
我做错了什么? 谢谢指教