首页 > 解决方案 > 使用 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: '路径不是合法形式。'

我该如何克服呢?谢谢您的帮助。

实体框架 6.2.0、Ngpsql 4.0.2、ef.npgsql 3.2.0

标签: entity-frameworkentity-framework-6npgsql

解决方案


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

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

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

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


推荐阅读