代码之家  ›  专栏  ›  技术社区  ›  PKCS12

覆盖npgsql.net核心中的索引

  •  0
  • PKCS12  · 技术社区  · 6 年前

    我正在尝试使用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…)

    有什么建议吗?

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   kasptom    6 年前

    您使用哪个版本的ef core provider for postgresql? 检查您的 *.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 . 如果你使用骑手,你可以通过 Tools -> NuGet -> NuGet Force Restore

    编辑: 同时检查您的PostgreSQL版本是否为 11 (or higher)