使用EF鏈接Postgresql

環境:html

VS2017 Communitygit

Windows 10github

Postgresql 9.6 sql

安裝Postgresql:數據庫

https://www.postgresql.org/download/ide

1.安裝咱們須要的Nuget Packages:工具

install-package npgsql -version 3.1.1
Install-Package EntityFramework6.Npgsql -Version 3.1.1

2.首先得安裝一個vs的擴展工具,這樣咱們才能在server explorer中像連sql中同樣鏈接到postgresql數據庫。oop

3. 安裝好上面的擴展後,咱們就在se中創建好咱們的鏈接。post

4.咱們選擇的是Database First的方式,因此以後咱們是從DB裏面來建立咱們的DataModel。測試

 5.創建好Model後,咱們試着來建立一個EF的Control.

 6.看到如下這個錯誤。

 

 7.Build一下咱們的project以後,接着看到這個錯誤。

8.在Web config 里加入以下的配置。

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

9.應該能看到conttroller建立成功了。

10.可是訪問的時候,可能因爲咱們的表裏索引和外鍵的關係造成死循環,咱們須要在Global.asax中加入以下的配置。

HttpConfiguration config = GlobalConfiguration.Configuration;

config.Formatters.JsonFormatter
            .SerializerSettings
            .ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

 

接下來能夠使用postman來測試本身的API是否是本身想要返回的東西了。

 

References:

http://www.npgsql.org/doc/index.html

https://www.nuget.org/packages/EntityFramework6.Npgsql/

https://www.nuget.org/packages/Npgsql/

https://github.com/npgsql/npgsql/issues/1439

https://wiki.postgresql.org/wiki/Using_Microsoft_.NET_with_the_PostgreSQL_Database_Server_via_ODBC

https://stackoverflow.com/questions/19467673/entity-framework-self-referencing-loop-detected

相關文章
相關標籤/搜索