【问题标题】:Covering Indexes in NPGSQL ,.Net Core覆盖 NPGSQL 中的索引,.Net Core
【发布时间】:2019-01-25 16:45:04
【问题描述】:

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

有什么建议吗?

谢谢!

【问题讨论】:

    标签: npgsql


    【解决方案1】:

    您使用哪个版本的 PostgreSQL EF Core 提供程序? 检查*.csproj 文件中的条目。

    应该是2.2.0版本,因为this feature是在2.2.0中引入的。

    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.0" />
    

    Hovever 文档似乎有一些错误。尝试在

    中配置索引
      protected override void OnModelCreating(ModelBuilder modelBuilder)
    

    如果我设法自己验证结果,我会通知您。

    如果方法仍然不可见并且在OnModelCreating() 中调用它们无济于事,请尝试force restoring Nuget packages。 如果你使用 Rider,你可以通过Tools -&gt; NuGet -&gt; NuGet Force Restore

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

    【讨论】:

    • 谢谢。出于某种原因,我可以在 Visual Studio 中获取的唯一版本是 2.1.2。我现在强制它下载 2.2.0。
    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多