none
TableAdapterについて RRS feed

  • 質問

  • こんにちは。

    VB2005+SQLServerExpressにて開発しています。

    TableAdapterについてですが、ウィザードを起動し、新しいストアドプロシージャを選択すると自動的に
    ストアドプロシージャが生成されます。

    たとえば、SelectCommand用のストアドプロシージャを選択する列以外の変更する分には
    特に問題はないのでしょうか。

    ためしに変更をしてみたのですが、特に問題は起こらないのですが、後で何かあっては困るので、
    質問をさせていただきました。

    どうか、アドバイスお願いします。

    2011年8月19日 8:01

回答

  • このときに生成されるSelectストアドプロシージャについて、抽出条件や並び替えなどを追加、変更しても
    TableAdapterに影響は行いかが知りたいのです。


    .NET FrameworkにTableAdapterというクラスは存在せず、TableAdapter作成ウィザードによって、「何とかTableAdapterクラス」が生成されます。つまり、TableAdapter作成ウィザードにおいて、どのように指示するかによって、生成されるTablaAdapterが決まります。
    抽出条件を変えれば、何とかTableAdapter.Fillメソッドのパラメーターは抽出条件ですから、TableAdapter.Fillメソッドは変更されることになります。例えば、抽出条件に年月日という条件を増やしたのであれば、TableAdapter.Fillメソッドのパラメーターも年月日を含むように生成し直されます。その結果、TableAdapter.Fillメソッドを実行している場所で、Fillメソッドのパラメーターに年月日を加えなければ、コンパイルエラーになります。
    一方、並び替えはストアドプロージャで実行されるselect文のorder by句に影響が出るだけですので、作成されるTableAdapterに違いはないでしょう。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク TI-cb400 2011年8月21日 13:05
    2011年8月20日 5:40
    モデレータ

すべての返信

  • たとえば、SelectCommand用のストアドプロシージャを選択する列以外の変更する分には
    特に問題はないのでしょうか。

    ここの意味が正確にわかりませんでした。ここの意味は、例えばUpdateCommand用のストアドプロシージャを変更するという意味でしょうか? もしくは、TableAdapter作成(変更)ウィザードの中で、「オプティミスティック同時実行制御」のオプションを変更するなど、ウィザードでのオプションを変更するという意味でしょうか?

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年8月19日 12:00
    モデレータ
  • ご回答ありがとうございます。

    相変わらず、説明が下手で大変申し訳ありません。

    TableAdapter作成ウィザードを使用して、「新しいストアドプロシージャの作成」を選択して進めていくと、
    Select,Insert,Update,Delete
    のそれぞれのストアドプロシージャが生成されると思います。

    このときに生成されるSelectストアドプロシージャについて、抽出条件や並び替えなどを追加、変更しても
    TableAdapterに影響は行いかが知りたいのです。

    「オプティミスティック同時実行制御」などのオプション変更の部分ではありません。

    2011年8月19日 22:14
  • 変更前と変更後とでTableAdapterのソースコードの差分を確認すれば、影響の有無が把握できるのではないでしょうか?
    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/
    2011年8月19日 22:51
  • このときに生成されるSelectストアドプロシージャについて、抽出条件や並び替えなどを追加、変更しても
    TableAdapterに影響は行いかが知りたいのです。


    .NET FrameworkにTableAdapterというクラスは存在せず、TableAdapter作成ウィザードによって、「何とかTableAdapterクラス」が生成されます。つまり、TableAdapter作成ウィザードにおいて、どのように指示するかによって、生成されるTablaAdapterが決まります。
    抽出条件を変えれば、何とかTableAdapter.Fillメソッドのパラメーターは抽出条件ですから、TableAdapter.Fillメソッドは変更されることになります。例えば、抽出条件に年月日という条件を増やしたのであれば、TableAdapter.Fillメソッドのパラメーターも年月日を含むように生成し直されます。その結果、TableAdapter.Fillメソッドを実行している場所で、Fillメソッドのパラメーターに年月日を加えなければ、コンパイルエラーになります。
    一方、並び替えはストアドプロージャで実行されるselect文のorder by句に影響が出るだけですので、作成されるTableAdapterに違いはないでしょう。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク TI-cb400 2011年8月21日 13:05
    2011年8月20日 5:40
    モデレータ
  • ご回答ありがとうございます。

    TableAdapterは一度作成すると、修正の際にいろいろと問題が出たことがあり、敬遠をしていたのですが、
    再度挑戦をしている最中で、ふと疑問に思い、質問をさせていただきました。

    ご丁寧な回答、ありがとうございました。

    2011年8月21日 13:07