【问题标题】:How do we Change PropertyName of Linq expression?我们如何更改 Linq 表达式的 PropertyName?
【发布时间】:2018-05-22 09:11:31
【问题描述】:

我有如下 Linq 表达式,它在 CosmosDB 数据库上的 DocumentDB SQL API 上执行。

predicate = predicate.And(x => x.SystemID== "123");

当我在上下文中执行它时,它默认生成如下 SQL 语句。

select * from [Table] where SystemID == "123"

但预期的查询低于

select * from [Table] where id == "123"

但“我的数据库”表有一个名为 id 的列,并且 Model 属性的名称为 SystemID
如何使用序列化逻辑来解析该属性名称?

注意:我不想使用 AutoMapper。

【问题讨论】:

  • 这是默认的还是预期的 select * from [Table] where id == "123"??
  • 这是意料之中,我的错误让我纠正我的问题
  • 我曾经为Cosmonaut 做类似的事情,以便添加一个额外的表达式。检查ExpressionExtensions.cs中的方法。您可能会覆盖参数名称。

标签: linq lambda azure-cosmosdb jsonserializer


【解决方案1】:

在您的属性上使用[JsonProperty("id")] 属性将使LinqToCosmosSQL 提供程序将其考虑在内并将其转换为id

【讨论】:

  • 这是正确的,但是此修复程序将序列化我的 api 响应并将属性重命名为我不想要的 id。我想在前端使用 SystemID。
  • 好吧,你不能真的一边吃蛋糕一边吃。您最好的选择是使用 SQL 本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 2011-11-22
相关资源
最近更新 更多