我有一个表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")]
它们都不起作用。
答案 0 :(得分:1)
对[JsonPropertyName]
的支持有just been added,并且将从版本5.0.0-preview6开始起作用。
答案 1 :(得分:0)
我找到了一种解决方法-在db中命名.net属性。 因此,在我的情况下,它将是.net属性,例如:
public FooBar foo_bar { get; set; }
看起来很丑,但是行得通