2

Windowsフォームの継承を使用しているvb.net Windowsフォームアプリケーションがあります。すべての継承フォームで使用される基本的なレイアウトとメソッドの一部を提供する基本フォームがあります。これには、基本フォームコンストラクターでのエンティティ フレームワーク コンテキストの初期化が含まれます。

Dim dataContext As New CCEntities()

子フォームは、このコンテキストを利用できます。アプリケーションはエラーなしでコンパイルおよび実行されますが、デザイナーで子フォームを表示しようとすると、「指定された名前付き接続が構成で見つからないか、EntitlyClient プロバイダーで使用することを意図していません。その初期化行を子フォーム コンストラクターに移動すると、デザイナーはエラーなしで表示されます

これをトラブルシューティングするために、基本フォーム コンストラクターで初期化時に接続文字列を次のように指定しました。

Dim dataContext As New CCEntities(System.Configuration.ConfigurationManager.ConnectionStrings.Item("CCEntities").ConnectionString)

その参照を接続文字列に追加すると、子フォームに「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示されるようになりました。

ただし、エンティティ接続文字列をその初期化行にハードコーディングすると、デザイナーは正常に動作します。

基本フォームが app.config ファイルにアクセスできないようです。基本フォームから app.config ファイルに適切にアクセスし、デザイナーを適切に動作させるにはどうすればよいですか?

4

1 に答える 1

2

「設計時」にコードが実行されないようにする必要があります。

if(System.ComponentModel.LicenseManager.UsageMode != System.ComponentModel.LicenseUsageMode.Designtime)
{
     //do connection stuff here
}
于 2012-09-26T13:03:20.920 に答える