我正在尝试使用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不包含“实体”的定义并且没有“实体”接受参数“设备”(设备存在),因此它不起作用。
然后我将其更改为引用ModelBuilder类型变量,它也不起作用(不重写OnConfiguring(ModelBuilder ...)
有什么建议吗?
谢谢!
答案 0 :(得分:1)
您使用哪个版本的EF Core提供程序用于PostgreSQL?
检查您的*.csproj
文件中的条目。
它应该是 2.2.0 版本,因为2.2.0中引入了this feature。
<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)