0

「顧客」(親)と「住所」(子)のテーブルが必要だとしましょう。それらは関連付けられているため、それらの間には 1:1 の関係があります。

   Table<Customer> table = db.GetTable<Customer>();

   var query = from c in table
               select p;

選択した顧客テーブルを使用して、「顧客」に関連付けられているテーブルに対してクエリを実行する可能性はありますか?それとも、別のクエリですべてのアドレス テーブルを取得する必要がありますか?

さらに、顧客テーブルで DELETE コマンドを使用すると、関連するすべてのテーブルも削除されますか?

前もって感謝します、

プロット

4

2 に答える 2

1

それらが外部キーに関連している場合、それは非常に簡単です。アドレスは、顧客の所有物である必要があります。

var query = from c in table
            select c.Address;

joinまたは、外部キーが存在しない場合にそれを行うことができます。

var query = from c in table
            join address in [AddressTable] on c.AddressId equals address.Id
            select address;

DELETEあなたが言及しているタイプは、カスケード削除と呼ばれます。外部キーで有効にする必要があります (これを機能させるには FK が必要です)。このスレッドを参照してください。

于 2012-08-21T10:50:20.700 に答える
0

lazy loadアドレスを個別に取得する必要はありません。dbml で関連付けを設定している場合は、アドレスのみを取得できるはずです (つまり、テーブルをリンクする矢印)。

Instellisense はプロパティを表示する必要があります。

  var query = from c in table
               select p.Address;

テーブル自体の外部キーに削除を設定するon delete cascadeと、顧客レコードを削除するたびに関連するアドレスが削除されます。

于 2012-08-21T10:50:47.483 に答える