本文介绍了生成.ADO.net实体数据模型时,PostgreSQL不会出现在数据源中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过直接使用npgsql成功访问了现有的postgresql dbase。我为此使用了

I succeeded in accessing an existing postgresql dbase by using npgsql directly. I used for this:


  1. PostgreSQL 9.0.10(32位)

  2. Visual Studio 2015社区(64位)

  3. NpgSql 2.2.5(通过管理
    Nuget程序包)



http://www.npgsql.org/doc/上搜索并尝试了所有内容ddex.html ,...,但是II没有成功生成.ADO.net实体数据模型,因为postgresql没有出现在数据源中。

The dbase however has 25+ tables and 400+ columns and such my intention is to to use entity framework + .ADO.net Entity Data Model to avoid having to code access to all columns. I searched and tried everything on this site, npgsql site http://www.npgsql.org/doc/ddex.html, ... but I I did not succeeded in generating an .ADO.net Entity Data Model because postgresql does not appear in Data Source.

我为此使用了


  1. PostgreSQL 9.0.10(32位)

  2. Visual Studio 2015社区(64位)

  3. NpgSql 2.2.5(通过管理Nuget软件包)

  4. Setup_Npgsql-2.2.5.0-r3-net45.exe(来自GitHub因为某些站点
    表示需要将GAC
    中的版本与Visual Studio项目中使用的软件包具有相同的版本;我没有使用
    3.0.0版本,因为Github错过了安装文件)。 / li>
  5. Npgsql.entityframework6 2.2.5(通过管理Nuget包)

  6. 实体框架6.1.3(通过管理Nuget包)

  1. PostgreSQL 9.0.10 (32 bit)
  2. Visual Studio 2015 Community (64 bit)
  3. NpgSql 2.2.5 (through Manage Nuget Packages)
  4. Setup_Npgsql-2.2.5.0-r3-net45.exe (from GitHub because some sitesindicated the requirement of having the same version into GACas the used package in visual studio project; I did not took version3.0.0 as Github misses install files).
  5. Npgsql.entityframework6 2.2.5 (through Manage Nuget Packages)
  6. Entityframework 6.1.3 (through Manage Nuget Packages)

我该怎么办,所以在尝试t时,PostgreSQL显示为数据源。 o生成.ADO.net实体数据模型吗?

还是Visual Studio 2015社区不允许为PostgreSQL生成.ADO网络实体数据模型?

What do I have to do so postgresql appears as Data Source when trying to generate an .ADO.net Entity Data Model?
Or does Visual Studio 2015 community does not allows the generation of .ADO net entity data model for postgresql ?

编辑
我添加了以下信息,希望得到答复:

EDITI have added the following info in the hope for a reply:

Microsoft Windows 8.1 6.3.9600内部版本9600 64位使用

Microsoft Windows 8.1 6.3.9600 build 9600 64-bit used

提取 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

Extract out "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config"

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

提取 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 \Config\machine.config

Extract out "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config"

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

Visual Studio -packages.config

"Visual Studio - packages.config"

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.1.3" targetFramework="net452" />
  <package id="Npgsql" version="2.2.5" targetFramework="net452" />
  <package id="Npgsql.EntityFramework" version="2.2.5" targetFramework="net452" />
</packages>

Visual Studio-App.config

"Visual Studio - App.config"

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>


推荐答案

我很困惑,但是3天因为同样的问题。

I was confused while 3 days becuase the same problem.

但是,我发现解决了这个问题:

But, I found solve this problem:


  1. install。 Visual Studio环境中的vsix文件。 (NpgsqlDdexProvider)

  1. install .vsix file in your visual studio environment. https://github.com/npgsql/npgsql/releases/tag/v3.1.8 (NpgsqlDdexProvider)

通过Nuget Package Manager安装Npgsql和EntityFramework6.Npgsql。

install Npgsql and EntityFramework6.Npgsql by Nuget Package Manager.

构建您的项目。 (对于Nuget修改后的App.xaml的应用配置)

Build your project. (For apply configuration of modified App.xaml by Nuget)

您可以使用ADO.NET实体模型生成。

You can use ADO.NET Entity Model Generation.

此外,dotConnect在Express版本中不支持实体模型。

Also, dotConnect not support Entity Model in Express version. It supported in only commercial version.

但是目前,Npgsql已立即关闭EDM中的错误。所以,我找到了解决方案。

But currently, Npgsql has immediately close bug in EDM. so, I finding solution.

这篇关于生成.ADO.net实体数据模型时,PostgreSQL不会出现在数据源中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-29 19:55