首页 > 解决方案 > ef core 生成无效查询

问题描述

我有一个表foo,其中一列是barjsonb 类型,其中包含属性foo_barjsonb。

我想用这样的 ef 核心查询来计算元素的数量:

await dbContext.Foo.CountAsync(x => x.bar.FooBar.Name == "some name");

Ef core 生成这样的查询:

SELECT COUNT(*)::INT
FROM foo AS f
WHERE f.bar#>>'{FooBar,Name}' = 'SomeName'

它对我不起作用,因为不是正确的属性名称foo_baref core generate FooBar(作为我的 .net 属性)而不是nameef core generate Name

如果有办法让 ef core 生成以下查询:

SELECT COUNT(*)::INT
FROM foo AS f
WHERE f.bar#>>'{foo_bar,name}' = 'Production'

我试图用属性标记我FooBar[JsonPropertyName("foo_bar")]属性。

我也尝试使用流利的方法:

entity.Property<FooBar>("FooBar").HasColumnName("foo_bar").HasColumnType("jsonb");

他们两个都不行。

标签: postgresql.net-corenpgsqlef-core-3.1

解决方案


[JsonPropertyName]刚刚添加了对 的支持,将从版本 5.0.0-preview6 开始工作。


推荐阅读