无法使用EF的视图自动生成控制器

时间:2018-03-16 13:11:53

标签: c# postgresql visual-studio entity-framework npgsql

我做的步骤:

  • 为Visual Studio安装Npgsql EF扩展
  • 创建新项目
  • 从nuget安装Npgsql
  • 从nuget
  • 安装EntityFramework6.Npgsql
  • 使用服务器资源管理器
  • 创建与postgresql的连接
  • 创建ADO.NET实体数据模型 - 来自DB的EF Designer
  • 编译
  • 使用实体框架创建控制器

最后一步给我这个错误:

There was an error running the selected code generator: 
'Unable to retrieve metadata for 'MyProject.Models.MyClass' 
 Unable to find the requested .Net Framework Data Provider. It may not be installed. 

enter image description here

所以我可以连接到postgres,从DB创建模型,但是无法从EF自动生成视图。

更多技术细节

  • Npgsql版本:3.2.7
  • EntityFramework6.Npgsql 3.1.1
  • PostgreSQL版本:9.4
  • 操作系统:Windows 10
  • Visual Studio Community 2017 v15.4

在webconfig中我有这个部分

  <dependentAssembly>
    <assemblyIdentity name="Npgsql" publicKeyToken="5d8b90d52f46fda7" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.2.7.0" newVersion="3.2.7.0" />
  </dependentAssembly>

不确定是否需要添加其他内容,因此VS将其视为已安装。

1 个答案:

答案 0 :(得分:1)

在配置文件中添加:

<system.data>
  <DbProviderFactories>
      <remove invariant="Npgsql"/>
      <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" support="FF"/>
  </DbProviderFactories>
</system.data>