NPGSQL ,.Net Core 中的覆盖索引
Covering Indexes in NPGSQL ,.Net Core
我正在尝试使用 NPGSQL、.NET Core 在我的索引中包含非键列。
我已按照此处找到的示例进行操作 https://www.npgsql.org/efcore/modeling/indexes.html
protected override void OnConfiguring(DbContextOptionsBuilder builder)
=> modelBuilder.Entity<Device>()
.ForNpgsqlHasIndex(b => b.Id)
.ForNpgsqlInclude(b => b.Name);
该示例引用了 "modelBuilder" 但请问 modelBuilder 是什么(因为它在当前上下文中不存在)?
我将其更改为引用构建器变量,但它不起作用,因为 DbContextOptionsBuilder 不包含 'Entity' 的定义并且没有 'Entity' 接受参数 'Device'(设备存在) .
然后我将其更改为引用 ModelBuilder 类型变量,它也不起作用(没有覆盖 OnConfiguring(ModelBuilder ...)
有什么建议吗?
谢谢!
您使用哪个版本的 PostgreSQL EF Core 提供程序?
检查 *.csproj
文件中的条目。
应该是2.2.0版本,因为this feature是在2.2.0中引入的。
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.0" />
不过文档似乎有一些错误。尝试在
中配置索引
protected override void OnModelCreating(ModelBuilder modelBuilder)
如果我设法自行验证结果,我会通知您。
如果方法仍然不可见并且在 OnModelCreating()
中调用它们无助于尝试 force restoring Nuget packages。
如果您使用 Rider,您可以通过 Tools -> NuGet -> NuGet Force Restore
编辑: 还要检查您的 PostgreSQL 版本是否为 11 (or higher)
我正在尝试使用 NPGSQL、.NET Core 在我的索引中包含非键列。
我已按照此处找到的示例进行操作 https://www.npgsql.org/efcore/modeling/indexes.html
protected override void OnConfiguring(DbContextOptionsBuilder builder)
=> modelBuilder.Entity<Device>()
.ForNpgsqlHasIndex(b => b.Id)
.ForNpgsqlInclude(b => b.Name);
该示例引用了 "modelBuilder" 但请问 modelBuilder 是什么(因为它在当前上下文中不存在)?
我将其更改为引用构建器变量,但它不起作用,因为 DbContextOptionsBuilder 不包含 'Entity' 的定义并且没有 'Entity' 接受参数 'Device'(设备存在) .
然后我将其更改为引用 ModelBuilder 类型变量,它也不起作用(没有覆盖 OnConfiguring(ModelBuilder ...)
有什么建议吗?
谢谢!
您使用哪个版本的 PostgreSQL EF Core 提供程序?
检查 *.csproj
文件中的条目。
应该是2.2.0版本,因为this feature是在2.2.0中引入的。
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.0" />
不过文档似乎有一些错误。尝试在
中配置索引 protected override void OnModelCreating(ModelBuilder modelBuilder)
如果我设法自行验证结果,我会通知您。
如果方法仍然不可见并且在 OnModelCreating()
中调用它们无助于尝试 force restoring Nuget packages。
如果您使用 Rider,您可以通过 Tools -> NuGet -> NuGet Force Restore
编辑: 还要检查您的 PostgreSQL 版本是否为 11 (or higher)