WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

Entity Framework 6 Power Tools

by WebSurfer 19. August 2020 15:12

Entity Framework Code First でデータベースを生成するときに作成するコンテキストクラスから、各テーブルに属するプロパティとテーブル間のリレーションを現すダイアグラムを表示するツールを紹介します。(注: .NET Framework 用です。Core には使えません)

EDM ダイアグラム

上の画像がそのツールを使って表示したダイアグラムです。(既存のデータベースから Visual Studio の ADO.NET Entity Data Model デザイナを使って EDM を作る場合はここで紹介するツールは不要で、自動生成される .edmx ファイルに表示されます。具体例は、先の記事「スキャフォールディング機能」のステップ 1 ~ 10 参照)

ツールは Microsoft の ASP.NET MVC5 のチュートリアルの「Entity Framework パワーツール」に紹介されているものです。以下のサイトからダウンロードできます。

Entity Framework 6 Power Tools Community Edition

ダウンロードした EFPowerTools.vsix を実行すればツールは Visual Studio に自動的にインストールされます(VS2015, VS2019 で確認。VS2017 は持ってないので不明)。下の画像は VS2019 に拡張機能としてインストールされたところです。

拡張機能にインストール

使い方は次の通りです。

例えば、Entity Framework Code First でデータベースを生成するために以下のようなコンテキストクラスを定義したとします。

コンテキストクラス

Visual Studio のソリューションエクスプローラーからそのファイル(下の画像の SchoolContext.cs)を右クリックし、表示されたメニューから[View Entity Data Model (Read-only)]を選択します。

View Entity Data Model (Read-only)

そうすればこの記事の一番上の画像の通り Entity Data Model のダイアグラムが表示されます。

Tags: , ,

DevelopmentTools

Visual Studio 2019 がフリーズする

by WebSurfer 21. June 2020 13:30

2020/7/10 追記: Developer Community フォーラムによると、この記事の問題は v16.6.3 で fix されているそうです。自分も v16.6.3 にバージョンアップ後は問題ないことを確認しました。

自分が使っている Visual Studio Cummunity 2019 のバージョンを 16.6.0 にアップグレードした後、[ヘルプ(H)]⇒[Microsoft Visual Studio のバージョン情報(A)]でバージョン情報を表示しようとすると、

ヘルプでバージョン情報を表示

以下の画像で示したようにビジー状態となってしまいます。一旦こうなってしまうと Visual Studio の操作が不能になってしまい、タスクマネージャーで Visual Studio を終了する他手がなくなってしまいます。

VS2019 がビジー状態

4 月に MySQL 8.0.19 をインストールしたのですが、その時同時にインストールされた MySQL for Visual Studio v1.2.9 との相性の問題が原因のようで、それを Visual Studio の[拡張機能(X)]⇒[拡張機能の管理()]で表示される「拡張機能の管理」ダイアログで無効にすると、

拡張機能の管理

以下の画像の通りバージョン情報は表示されるようになりました。(MySQL の何をインストールしたかの詳細は、先の記事「MySQL をインストールしました(その 3)」を参照ください)

バージョン情報

調べてみると、Microsoft の Developer Community フォーラム About Microsoft Visual Studio frozen で報告が上がっていて、MySQL for Visual Studio 以外にも Oracle Developer Tools for Visual Studio 2019 Version: 19.3.1.0 で同様な問題が出るそうです。

というわけで、どうしても Oracle の開発ツールを使う必要がある時以外は無効にしておいた方が良いかもしれません。自分が使ってきた限りではバージョン情報の表示以外の不具合は気が付かなかったのですが・・・

Developer Community フォーラムによると "A fix for this issue has been internally implemented and is being prepared for release." とのことですので、そのうち修正されることを期待してます。

Tags: , , ,

DevelopmentTools

ローカル .wsdl ファイルからプロキシ作成

by WebSurfer 11. May 2020 12:06

.NET Framework アプリから Web / WCF サービスに接続して情報を取得する場合、Visual Studio の「サービス参照の追加」を利用してアプリと Web / WCF サービス間のインターフェイスとなるプロキシクラスを生成し、それを利用すると思います。

サービス参照の追加

Microsoft のチュートリアルなどでは、上の画像で[アドレス(A):]に設定するのはサービスの URL(例: http://example.com/service.svc)という記述しか目にしてこなかったので、URL 以外はダメだと思い込んでいましたが、実はローカルの .wsdl ファイルでも OK でしたという話を書きます。

Microsoft のドキュメント「Web サービス プロキシの作成」に ".NET Framework SDK には、Web サービス記述言語ツール (Wsdl.exe) が含まれています。これにより、.NET Framework 開発環境で使用する Web サービス プロキシを生成できます" という記述があります。

その記事のコード例では、やはりサービスの URL を設定していますが、Wsdl.exe のヘルプ(以下の画像参照)を見るとローカル .wsdl ファイルのパスでもよさそうです。

Wsdl.exe のヘルプ

一方、.wsdl ファイルですが、@IT の記事「WSDL:Webサービスのインターフェイス情報」によると十分なインターフェイス情報が含まれているようで、それからプロキシクラスが生成できないわけはなさそうです。

Visual Studio も「サービス参照の追加」ウィザードには Wsdl.exe を使っているはずです。なので、自分が作った Web サービスから .wsdl ファイルを作り、それを自分の PC のローカルフォルダにおいて、そのバスを「サービス参照の追加」ダイアログの[アドレス(A):]に設定して試してみました。

結果、以下の通りプロキシクラスを生成できます。

生成されたプロキシクラス

アプリから生成されたプロキシクラスを使って Web サービスに接続し、期待通りの結果が得られることも確認できました。

実際に URL ではなくローカルの .wsdl ファイルからプロキシクラスを作成しなけれなならないケースがどれぐらいあるのか分かりませんが、Visual Studio でこういうこともできるということで参考になれば幸いです。

(ちなみに http://example.com/service.svc というサービスの URL から .wsdl ファイルをダウンロードするには、その URL に ?wsdl というクエリ文字列を追加して要求をかけます。)

Tags: , ,

DevelopmentTools

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  September 2020  >>
MoTuWeThFrSaSu
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar