使用 Npgsql 的现金代码优先模型

Cashed code-first model with Npgsql

我正在尝试启用缓存实体模型(阅读 https://mirkomaggioni.com/2018/01/06/performance-improvements-in-entity-framework-6-2/ 后)以及 Npgsql 提供程序。

数据库配置:

Class NpgsqlConfiguration
  Inherits System.Data.Entity.DbConfiguration
  Public Sub New()
    Dim provider = "Npgsql"
    SetProviderServices(provider, Npgsql.NpgsqlServices.Instance)
    SetProviderFactory(provider, Npgsql.NpgsqlFactory.Instance)
    SetDefaultConnectionFactory(New Npgsql.NpgsqlConnectionFactory())

    SetModelStore(New DefaultDbModelStore(Directory.GetCurrentDirectory()))
  End Sub
End Class

首先 运行 Edmx 模型生成,内容有效。 但是在第二个 运行 异常发生时,当我尝试从上下文

访问某些数据库集时
ctx.Set(Of EntityClass).ToList()

System.ArgumentException: 'The path is not of a legal form.'

我该如何克服这个问题?感谢您的帮助。

Entity framework6.2.0,Ngpsql 4.0.2,ef.npgsql3.2.0

我正在使用 Costura.Fody 作为解决方案,当我禁用它时,EF 开始加载生成的模型。

不过我没有注意到任何显着的性能提升:/

  • 在没有 edmx 模型的情况下调用第一个查询大约需要 2.4 秒
  • 使用edmx模型调用第一个查询大约需要2.2s

我模型中有46个实体(表),可能是数量太少,找不到缓存的效果..