我有一个表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");
它们都不起作用。
我发现了一种解决方法-用.db属性作为db中的名称。因此,在我的情况下,它将是.net属性,例如:
public FooBar foo_bar { get; set; }
看起来很丑,但是有效