エンティティモデルにマスター詳細関係があります(従来のNorthwind Orders-OrderDetailsを簡単に考えられるようにするため)エンドユーザーは、マスターパーツの詳細をグリッドに入力してから、下のグリッドに移動して'を入力します。関連する詳細。
エンティティモデル自体の中から、その注文に関連する新しいOrderDetailレコードを作成するたびに、注文テーブルから「CustomerId」値に相当するものを取得し、それを使用して必要な特定の情報を取得できるようにしたいと思います。各詳細レコードにあります。
エンティティモデル自体でこれを行う簡単な方法はありますか?これはvbで行いますが、C#を読むことができます。
明確化のための追加情報:
ジェリックは彼の答えの中で興味深い点を指摘しました。これは、テーブルが適切に正規化されていない可能性があることを示唆していることを私は彼に感謝します。通常の状況では同意しますが、ここでは自分の制御できない制約によって強制されます。Tisは、商業漁業者による魚の水揚げを記録するアプリケーション用です。各水揚げはいくつかの異なる種類の魚で構成されている可能性があり、すべての水揚げの詳細は法律により政府機関に報告する必要があります。
この目的のために、魚が捕らえられた正確な場所が重要であるため、各ラインの詳細(着陸の詳細ライン)は、アイテムが捕らえられたエリアとゾーンを記録する必要があります。ほとんどの小型ボートの場合、この情報はほとんど常に同じです(ただし、数か月間海に出る大型ボートは、いくつかのエリアやゾーンで魚を捕まえることができます(したがって要件))。
アプリケーションのエンドユーザーがこれを簡単に行えるようにするために、デフォルトのエリアとゾーンの詳細を船舶の記録(Northwindの顧客に相当)に記録するのが理にかなっていると感じました。ランディングヘッダーテーブル(Northwind Order)内に、vesselIdへの参照があります。着陸詳細線が入力されたら、着陸ヘッダーを参照して船舶IDを取得し、それを関数のパラメーターとして使用して、その船舶に関連付けられているデフォルトのエリアとゾーンを取得します。
これを行うためにエンティティフレームワークを使用しているので、ランディングの最終IDが何になるかはまだわかりません(まだコミットされていません。エンティティフレームワークの利点は、この種のデータ入力が簡単になることです。 )そのため、「公式」IDがまだ作成されていないランディングヘッダーから船舶IDを取得しようとしています。
ほとんどの場合(私自身も含む)、これがデータベースの正規化の問題であると考えるように促す質問の方が理にかなっていると思います。
私がやろうとしているのは、着陸詳細エンティティのOn PropertyChangingイベントの1つで、まだデータベースにコミットされていない、関連付けられた着陸ヘッダーエンティティのvesselIdを取得する方法を見つけることです。これはclientcacheにありますが、まだデータベースにはありません。
どうもありがとう