2015-08-17 13 views
5

Sono riuscito ad accedere a un dbase postgresql esistente utilizzando direttamente npgsql. Ho usato per questo:postgresql non appare in Data Source durante la generazione .ADO.net Entity Data Model

  1. PostgreSQL 9.0.10 (32 bit)
  2. Visual Studio 2015 Comunità (64 bit)
  3. NpgSql 2.2.5 (attraverso Gestisci Pacchetti Nuget)

Tuttavia, dbase ha 25+ tabelle e oltre 400 colonne e la mia intenzione è quella di utilizzare l'entity framework + .ADO.net Entity Data Model per evitare di dover codificare l'accesso a tutte le colonne. Ho cercato e provato tutto su questo sito, npgsql site http://www.npgsql.org/doc/ddex.html, ... ma non sono riuscito a generare un modello di dati di entità .ADO.net perché postgresql non appare in Data Source.

ho usato per questo:

  1. PostgreSQL 9.0.10 (32 bit)
  2. Visual Studio 2015 Comunità (64 bit)
  3. NpgSql 2.2.5 (attraverso Gestisci pacchetti Nuget)
  4. Setup_Npgsql-2.2.5.0-r3-net45.exe (da GitHub perché alcuni siti indicavano il requisito di avere la stessa versione in GAC come pacchetto usato nel progetto di Visual Studio; non ho preso la versione 3.0.0 come Github misse s file di installazione).
  5. Npgsql.entityframework6 2.2.5 (tramite Gestione pacchetti Nuget)
  6. EntityFramework 6.1.3 (tramite Gestione pacchetti Nuget)

Che cosa devo fare in modo PostgreSQL appare come origine dati quando si cerca di generare un modello di dati di entità .ADO.net?
Oppure la comunità di Visual Studio 2015 non consente la generazione del modello di dati di entità net .ADO per postgresql?

EDIT ho aggiunto le seguenti informazioni, nella speranza di una risposta:

Microsoft Windows 8.1 6.3.9600 costruire 9600 a 64 bit utilizzato

Estratto 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> 

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

012.351.641.061.
<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"

<?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"

<?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> 
+0

Ho lo stesso problema in VS 2015 e ho fatto più o meno la stessa cosa che hai, ma non posso ottenere Postgres a mostrare. Ho persino installato la versione espressa di PostConnect di dotConnect senza fortuna. – thelok

+0

Posso capirti e sto ancora avendo questo problema. Non c'è molto che posso fare su questo come programmatore di inizio in C#. Immagino di non avere altra scelta che continuare a studiare/cercare finalmente di scoprire qualcosa di ovvio. – mcCfq4

+0

Questo mi ha dato incubi per settimane. In bocca al lupo. Alla fine l'ho risolto creando un sacco di funzioni per eseguire la manipolazione dei dati. –

risposta

2

Sono stato confuso per 3 giorni perché lo stesso problema.

Ma, ho trovato a risolvere questo problema:

  1. installare .vsix di file nel proprio ambiente Visual Studio. https://github.com/npgsql/npgsql/releases/tag/v3.1.8 (NpgsqlDdexProvider)

  2. installare Npgsql e EntityFramework6.Npgsql dal Gestore pacchetti Nuget.

  3. Costruisci il tuo progetto. (Per applicare la configurazione di App.xaml modificata da Nuget)

  4. È possibile utilizzare Generazione modello di entità ADO.NET.

Inoltre, dotConnect non supporta il modello di entità nella versione Express. Ha supportato solo la versione commerciale.

Attualmente, Npgsql chiude immediatamente l'errore in EDM. quindi, trovo una soluzione.