3

COM を可視化した C# クラス ライブラリがあるので、Visual Studio 6 で記述されたレガシー アプリケーションからも呼び出すことができます。このライブラリには、データベースにレコードを追加するための Entity Framework が含まれています。COM 経由でライブラリを呼び出すことはできますが、レコードがデータベースに追加されません。これをデバッグする最も簡単な方法は、ライブラリ ソリューションに C# WinForms テスト アプリを追加することだと判断しました。ここでも Entity Framework が失敗していることに気付きました。これは、ライブラリ内の app.config 接続文字列もテスト アプリケーションの一部である必要があるためです。これは、WinForms アプリが正しく動作し、レコードがデータベースに追加されたことを意味します。

ただし、従来のアプリからの COM 経由の呼び出しに対してもこれを修正するにはどうすればよいですか? 明らかに、app.config がありません。

4

1 に答える 1

0

COM exe ファイルの近くに app.config を置いてみましたか? それが機能しない場合、ライブラリは app.config の既定の接続文字列を使用できません。代わりに、次のようにする必要があります。

  1. レジストリまたは構成ファイルから手動で読み取ります (おそらく ConfigurationManager.OpenExeConfiguration で実行できますか? または、ここhttp://geekswithblogs.net/akraus1/archive/2006/01/04/64871.aspxの「読み書きの方法」というタイトルの例を参照してください)。 ExeConfigurationFileMap の使用については、別の App.Config ファイル」を参照してください。または
  2. COM アプリケーションから渡されるパラメーターとして受け入れます。次に、COM アプリケーションは、レジストリまたはある種の ini ファイルからその接続文字列を取得する必要があります。

いずれにしても、取得した接続文字列を手動で Entity Framework に提供する必要があります。簡単に検索すると、接続文字列を引数として受け入れる EntityConnection コンストラクターがあることがわかります。おそらくそれが適しているでしょう。

于 2012-07-13T14:36:47.943 に答える