azure-cosmosdb - 在 LINQ 查询中将 POCO 中的属性名称映射到 Cosmos Db 中的字段名称的问题
问题描述
date_sk
我有一个在 Cosmos Db 数据库中定义字段的模型,并DateSk
在代码中对应:
public class TestEntity { ...
[JsonPropertyName("date_sk")]
public Date DateSk { get; set; }
}
我对SELECT * FROM c where c.date_sk='2011-11-11'
在 Cosmos Db 资源管理器中运行查询没有任何问题,或者在 c# 中作为原始查询运行,如下所示:
FeedIterator<TestEntity> feeder = GetContainer().GetItemQueryIterator<TestEntity>(
new QueryDefinition($"SELECT * FROM c where c.date_sk='2011-11-11'"));
但是,当我尝试运行 LINQ 替代方案时:
var feeder = GetContainer()
.GetItemLinqQueryable<TestEntity>()
.Where(f => f.DateSk == "2021-11-11");
它没有抛出任何错误,但没有返回任何内容,当我设置断点以查看在后台运行的 SQL 查询时,我可以看到SELECT VALUE root FROM root WHERE (root["DateSk"] = "2021-11-11")
. 它直接显示DateSk
使用的属性名称,而不是date_sk
使用 JsonPropertyName 属性设置的真实字段名称。有趣的是,如果我使用非 LINQ 查询,映射工作正常,至少数据正确传输一个方向 date_sk->DateSk,所以 JsonPropertyName 属性在其余情况下工作正常
知道有什么问题吗?
解决方案
推荐阅读
- python - 无法在我的 Windows 10 上安装“Turicreate”
- html - 无法在 svg 中应用线条绘制和填充动画
- scala - Spark - 将列值传递给 udf,然后在 udf 中获取另一个列值
- consensus - 如何在 RAFT 共识协议中选择领导者
- c++ - 优化正在扼杀我在 clang 6 中的整数溢出检查
- c# - 如何将 IsActiveAsync 失败信息传递给用户和客户端?
- java - 从员工表中获取层次结构员工 ID
- windows - 将 exe 和 msi 文件合并到一个安装程序中
- sql - Oracle SQL (PL/SQL) 中带有集合的窗口函数(超前/滞后)
- scala - Spark(scala API)中的时间戳格式和时区