Npgsql : Visual Studio 2015를 PostgreSQL에 연결할 수 없습니다.

c# dapper postgresql visual-studio-2015

문제

PostgreSQL에 익숙하지 않고 MSSQ에서 PostgreSQL으로 MVC 5 앱을 변경하려고합니다. PostgreSQL을 성공적으로 설치하고 데이터베이스, 스키마 및 테스트 테이블을 만들었습니다. NuGet 패키지 인 EntityFramework6.Npgsql (v3.1.1)과 Npgsql (v3.1.7)도 성공적으로 설치했습니다. 내 web.config 및 machine.config 파일을 확인하고 Npgsql 참조가 이미 만들어졌습니다. 나는 dapper를 사용하여 데이터를 관리하고 있습니다.

web.config :

<add name="PgSQL_Conn" providerName="Npgsql" connectionString="server=127.0.0.1;port=5432;userid=user;password=password;database=DB_Name" />

<providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
    </providers>

<system.data>
    <DbProviderFactories>
    <remove invariant="Npgsql" />
    <add name="Npgsql Data Provider" invariant="Npgsql" description="Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" />
    <add name="dotConnect for PostgreSQL" invariant="Devart.Data.PostgreSql" description="Devart dotConnect for PostgreSQL" type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version= 7.6.714.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /></DbProviderFactories>
  </system.data>

machine.config :

    <system.data>
            <DbProviderFactories><add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/><add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/><add name="Npgsql Data Provider" invariant="Npgsql" description=".NET Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=3.1.6.0, Culture=neutral, PublicKeyToken=5D8B90D52F46FDA7"/></DbProviderFactories>
</system.data>

다음 코드를 사용하여 연결을 테스트하고 있습니다.

string text, query;

query = @"SELECT ""MOSB"".""GetText""() AS ""Text"";";

IDbConnection db = new Npgsql.NpgsqlConnection(ConfigurationManager.ConnectionStrings["PgSQL_Conn"].ConnectionString);
db.Open();

var result = db.Query(query);

text = result.First().Text;

응용 프로그램을 디버깅 할 때 중단 점이 db.Open ()에 도달하면 다음 오류가 나타납니다.

'Npgsql.PostgresException'유형의 예외가 Npgsql.dll에서 발생했지만 사용자 코드에서 처리되지 않았습니다 . 추가 정보 : 외부 구성 요소에서 예외가 발생했습니다.

BTW, 서버 탐색기 탭에서 새 데이터 연결 또는 서버를 추가하려고하면 목록에 PostgreSQL 공급자가 표시되지 않습니다. odbcad32.exe를 실행하면 두 개의 드라이버가 나타납니다.

나는 그 밖의 무엇을 해야할지 정말로 모른다.

인기 답변

문제 해결됨! 문제는 내 Windows 사용자 계정이 machine.config 파일을 편집 할 수 없다는 것입니다. 권한이 부여 된 후 파일이 성공적으로 수정되었으며 이제 Dapper 및 EF와 연결할 수 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.