ef核心生成无效查询

时间:2020-06-16 12:21:16

标签: postgresql .net-core npgsql ef-core-3.1

我有一个表foo,其中一列是jsonb类型的bar,其中包含属性foo_bar jsonb。

我想通过这样的ef核心查询来获取元素数量:

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

Ef核心生成这样的查询:

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

它对我不起作用,因为ef core代替了foo_bar,ef核心生成了FooBar(作为我的.net属性),而不是name,ef核心生成了{{ 1}}。

如果有一种方法可以使ef core生成以下查询:

Name

我试图用SELECT COUNT(*)::INT FROM foo AS f WHERE f.bar#>>'{foo_bar,name}' = 'Production' 属性标记我的FooBar属性。

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

[JsonPropertyName("foo_bar")]

它们都不起作用。

2 个答案:

答案 0 :(得分:1)

[JsonPropertyName]的支持有just been added,并且将从版本5.0.0-preview6开始起作用。

答案 1 :(得分:0)

我找到了一种解决方法-在db中命名.net属性。 因此,在我的情况下,它将是.net属性,例如:

public FooBar foo_bar { get; set; }

看起来很丑,但是行得通