none
リレーションの構築 RRS feed

  • 質問

  • お世話になります。

    VS2010でADO.NETを勉強しております。

    デザインで、
    簡易DataSet、複数のDataTableをデザインで構築しており、
    複数のDataTableの間でリレーションを、「Relation」(コレクション)項目から構築しています。

    あるテーブルに、親テーブルの項目の値を表示させるために、新しくカラムを作成して
    Expressionに、Parent(リレーション変数).カラム名を設定しているのですが、

    実行時に、例外エラーが発生します。
    内容が、{"親リレーションシップ 'Relation_Orders_Details' が見つかりません。"}でした。

    発生個所は、Form1.Desinger.csの下記のメソッドで起こっています。
    ((System.ComponentModel.ISupportInitialize)(this.dataSetNorthwind)).EndInit();

    Form1.Desinger.csをみても、this.dataSetNorthwind.Relations.AddRange()で
    リレーションを追加されているように見えるのですが。。。

    解決方法がわかりません。

    2013年5月9日 2:35

回答

  • Expresssion を指定した「式列」でのリレーションで、そのようなエラーが発生するという情報が、 2008年5月1日の投稿 にもありましたが…これも特に返信は付いていないようですね。

    一時的にリレーションシップを外しておき、デザイン時にでは無く、コードからリレーションを追加した場合もエラーになりますか?

    • 回答としてマーク 星 睦美 2013年5月20日 0:58
    2013年5月9日 4:10

すべての返信

  • Expresssion を指定した「式列」でのリレーションで、そのようなエラーが発生するという情報が、 2008年5月1日の投稿 にもありましたが…これも特に返信は付いていないようですね。

    一時的にリレーションシップを外しておき、デザイン時にでは無く、コードからリレーションを追加した場合もエラーになりますか?

    • 回答としてマーク 星 睦美 2013年5月20日 0:58
    2013年5月9日 4:10
  • ご返事ありがとうございます。

    リレーションは、デザイン部で設定したままで、削除せず
    Expressionへ代入する式を、デザイン部から削除し、Form1のコンストラクタ時に
    直接実装したところで、問題なく実行でき、適切な表示がされました。

    VS2010の不具合なのでしょうか。

    また複数のリレーションをデザイン部で追加すると、Constraint1はすでに登録されていますと
    同じ個所(※)で例外エラーが発生することもわかりました。

    ※Form1.Desinger.csの下記のメソッドで起こっています。
    ((System.ComponentModel.ISupportInitialize)(this.dataSetNorthwind)).EndInit();

    Version10.0.40219.1 SP1Relと記述されています。

    2013年5月9日 4:56
  • Form1のコンストラクタ時に直接実装したところで、問題なく実行でき、適切な表示がされました。

    回避策が見つかったのであれば、とりあえずは凌げそうですね。

    VS2010の不具合なのでしょうか。

    新規プロジェクトで試した場合も同じ結果になり、それが他のPCでも再現するようであれば、Expression判定に対する問題ということになるかも知れません。ただし、それがVisual Studioの問題なのか、.NET Framework側の問題なのかは私には分かりません。他のバージョンだとどうなのでしょうね。

    2013年5月9日 6:39
  • VS2010の不具合なのでしょうか。

    そのような不具合は記憶に無かったので、私の方で試してみましたが、特に問題は発生せず、正しく親テーブルの列の値を参照できました。
    VS2010のデザイナで正しく設定できていますから、Expressionプロパティに設定した「Parent(リレーション変数).カラム名」に誤りはないでしょう。
    であれば、デザイナでデザインしたデータセットやデーテーブルを、コードからうまく使えていない可能性を否定できません。
    デザイナでデザインしたデータセット、データテーブルを使うには、以下のようになりますが、このようにせず、新たなデータテーブルのインスタンスを生成していたりしませんか?

    var ds = new 名前空間.dataSetNorthwind();
    var tb1 = ds.Orders;
    var tb2 = ds.Details;


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2013年5月14日 7:30
    • 回答の候補の設定解除 星 睦美 2013年5月16日 0:43
    2013年5月9日 7:08
    モデレータ
  • フォーラム オペレーターの星 睦美です。
    Brillia さん、こんにちは

    返信がありませんので、コミュニティの回答者からの返信が解決の手がかりになったのではないかと思います。
    私のほうで[回答の候補に設定] させていただきましたが、もし引き続き質問があれば返信できます。

    回答がお役にたちましたら、今後もコミュニティで情報交換がより活発になりますように投稿者から[回答としてマーク]をお願いします。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美

    2013年5月15日 0:25
  • trapemiyaさんご返事ありがとうございます。

    デザイン部で自動的に作成されるソース部で、例外が発生しているので、
    何かしているということはありません。

    2013年5月15日 14:12
  • 質問の事象の解決方法として役立つアドバイスだと思いますので、今回は私から魔界の仮面弁士さんからの返信に[回答としてマーク]させていただきました。

    今後もBrillia さんが作成したテーブルで同様の事象がありましたら詳しい再現の手順をお知らせいただければ、役立つ情報が見つかるのではないかと思います。

    今後ともMSDN フォーラムをよろしくお願いします。



    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美


    • 編集済み 星 睦美 2013年5月20日 1:56 編集
    2013年5月20日 1:56