VisualStudio2019で、WEBアプリケーションを作りたいと考えております。
ado.net entity data modelでpostgrsqlからデータベースファーストのモデルを作成しようと試みましたが、そもそもデータプロバイダーでpostgrsplを選択できません。
nugetにnpgspl を入れましたが、出来ませんでした。
ado.net entity data modelでpostgrsqlを選択できるようにするにはどうしたら解決できるでしょうか?
よろしくお願いいたします。
postgresql entity framework でググってみるぐらいのことはしたのでしょうか?
はい。調べてみて、いろいろ参考にしましたが出来ませんでした。
https://taka31blog.com/entityframework-dbfirst-postgresql-connect/
主にこちらのサイトを参考にしております。
postgresql entity framework でググると最初にヒットする記事が下記ですか、これは見ましたか?
【C#】Entity Framework Coreを使ってPostgreSQLを操作する
https://hirahira.blog/efcore-postgresql/
Web アプリではなく、また Code First ですが、まずはこれでやってみてはいかが?
最初に聞くべきだったですが、.NET Framework なのか .NET Core/.NET のどっちですか? そのバージョンは?
参考のURLありがとうございました。参考にいたします。
.NETFramework4.7.1で作成しています。
> .NETFramework4.7.1で作成しています。
ASP.NET Core だと思い込んでました。上に紹介した記事は ASP.NET Core のものですので忘れてください。すみません。
こちらこそ質問に明記しておらず申し訳ございません。
参考にされている記事に「サーバーエクスプローラーからPostgreSQLに接続するためNpgsql PostgreSQL Integration をVisual Studio 2019 Communityにインストール」とありますが、それはやりましたか?
Npgsql PostgreSQL Integration
https://marketplace.visualstudio.com/items?itemName=RojanskyS.NpgsqlPostgreSQLIntegration
The Npgsql PostgreSQL Integration extension adds PostgreSQL integration right inside Visual Studio.
With this extension, you can:
- Connect to PostgreSQL from Server Explorer
- Browse tables, views, columns and constraints
- Retrieve table data and construct queries via UI
- Create an Entity Framework 6 model from an existing database
・・・ということだそうですので、これなしでは Visual Studio で ADO.NET Entity Data Model は作れないようです。
Visual Studio Community 2022 17.2.6 + Npgsql PostgreSQL Integration 4.1.12 で試してみました。コンソールアプリなら問題なく EDM は作成できましたが、.NET Framework の ASP.NET MVC5 プロジェクトでは、ADO.NET Entity Data Model ウィザードの最初の画面は表示されるものの、そこから先に進めず最初の項目の選択の画面に戻ってしまいます。何かがバッティングしているような感じで、解決策が見つかりません。
.NET 6.0 の ASP.NET Core MVC アプリであれば DB ファースト、コードファーストいずれも問題ないのは確認しました。
Npgsql PostgreSQL Integration のバージョンアップで解決されるかもしれませんが、.NET Framework ベースにはあまり力が入ってないような感じで、どうしても .NET Framework ベースでなければならないということでなければ、.NET 6.0 の ASP.NET Core MVC の方向に進んだ方が良さそうな気がします。
どうしても .NET Framework ベースでなければならないということなら、ソリューション内に別プロジェクトでクラスライブラリを作り、その中に EDM を作るという手があります。明日それを回答として書きます。
質問者さん、無言ですが、回答したのでそれに対するフィードバックを返してください。役に立った/立たなかったぐらいはすぐに返せるのでは? 役に立たなかったならどこがダメかを書くとより期待に近い回答が出てくるかも。解決したなら解決に役立った回答にベストアンサーをつけてクローズしてください。とにかく無言は NG です。
いつまでも放置しておかないでクローズしてください。



