3 つのテーブルを持つ Entity Framework モデルがあります (それぞれに ID の主キーがあります)。ルート テーブルは子テーブルに対して 1 対多の関係を持ち、その子テーブルはその子テーブルと 1 対多の関係を持ちます。このモデルは、データベースから生成されたモデルに正しく反映されます。
コードでは、親テーブルに挿入 (追加) を行い、次にその子のテーブルを挿入し、最後に子の子に挿入します。コードは次の例のようになります。
foreach(var parentItemDTO in someDTOCollection) {
foreach(var someChildDTOItem in someChildDTOCollection) {
// Do some mapping here to the childEntity from DTO
// The foreign key relationship isn't set during mapping.
childTable.Insert(childEntity); // Underlying code is _dbSet.Add(entity)
foreach(var someChildChildDTOItem in someDTOChildChildCollection) {
// Do some mapping here to childChildEntity from DTO
// The foreign key relationship isn't set during mapping.
childChildTable.Insert(childChildEntity); // Underlying code is _dbSet.Add(entity)
}
}
// Do mapping here of the parentEntity from DTO
parentTable.Insert(someEntity); // Underlying code is _dbSet.Add(entity)
}
データベースへの挿入は機能しているようです。ただし、理解したいのは、マッピング中に外部キーの関係を明示的に定義せずに、EF がこれらのオブジェクトの関係をどのように維持するのかということです。これらの挿入スコープは安全ですか? これにより、孤児や子供が間違った親に挿入されることになりますか (現時点では発生していませんが、可能性はありますか)?
ありがとう!
編集(訂正):
すべての子の挿入後に親の挿入が行われることを反映するように、コードが更新されました。