none
フォームコントロールライブラリーでのEntity Data Model の使用について RRS feed

  • 質問

  • ユーザーコントロールで、Entity Data Model を使用したく思いテストしているのですが、うまくいきません。下記のエラーがでます。
    「指定された名前付き接続は、構成内に見つからないか、EntityClient プロバイダと併用することを意図していないか、または無効です。」

    環境は
    Visual Studio2008 SP
    .NetFramework 3.5 SP1
    言語 C#です。

    下記の手順で行いました。
    1.フォームコントロールライブラリーのプロジェクト作成
    2.プロジェクトに ADO.NET Entity Data Model 追加
      所定の方法で、テーブルを指定。
    3.UserControls上に、ボタン。DataGridView配置。
    4.ボタンクリックイベントに下記を記述。

               HanbaiEntities hanbai = new HanbaiEntities();
    
                var syain = hanbai.M_社員;
    
                dataGridView1.DataSource = syain;
    これで、実行すると、1行目で上記のエラーになります。

    ちなみに、Windowsフォームアプリケーションで同様のことをするとエラーにならず、きちんとDataGridViewにデータが表示されます。

    また、ADO.NET Entity Data Modelをほかのアセンブリに持って行っても同様でした。
    ユーザーコントロール内から、Entityのインスタンスを作成しようとすると、エラーになってしまいます。

    なかなか良い情報にアクセスできませんでしたので、ここに、投稿させていただきました。
    よろしくお願いいたします。
    2010年3月5日 4:09

回答

すべての返信

  • 試してませんが、以下の記事は参考になりませんか?
    http://david9142.spaces.live.com/blog/cns!5549D6C74FFBB345!433.entry
    2010年3月8日 9:34
    モデレータ
  • ひらぽんさん ありがとうございます。

    ご指摘の記事は確認済でした。

    しかし、ひらぽんさんのご指摘で再度よく考えなおしてみました。
    結論から申し上げますと、私の認識違いでした。うまくできました。
    2つの記事は、ADO.NET Entity Data Modelをアセンブリを分けて共有化する時の注意事項と呼んでいたのですが、
    WindowsFormアプリ以外から使用するときの注意事項でもあったのですね。

    私が作ろうと考えていたアプリは
    ADO.NET Entity Data Modelを使用するデータベースアプリをWindowsユーザーコントロールとして作成。
    それをメインメニュー(WindowsFormアプリ)からリフレクションで呼び出して実行。
    という形態だったのですが、
    メインメニューはデータベースアプリを起動するだけでなので、Entityとは無関係だと考えていました。
    しかし、とにかく起動する最初のWindowsアプリのメインメニューのapp.config に登録しておかないと、DLLからは接続文字列を取得できないんですね。

    今になって、DLLからはapp.configをうまく利用できないことを思い出しました(1年ぐらい前に別件でひっかかったことがありました。)。

    ありがとうございました。



    2010年3月8日 23:51