ef核心生成无效查询

问题描述 投票:0回答: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而不是正确的属性名FooBar(作为我的.net属性),而不是ef core生成name ef核心生成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-core npgsql ef-core-3.1
1个回答
0
投票

我发现了一种解决方法-用.db属性作为db中的名称。因此,在我的情况下,它将是.net属性,例如:

public FooBar foo_bar { get; set; }

看起来很丑,但是有效

© www.soinside.com 2019 - 2024. All rights reserved.