我有一个 Entity Framework 模型,它有 3 个表(每个表都有 indentity 主键)。根表与子表具有一对多的关系,该子表与其子表具有一对多的关系。该模型正确地反映在从数据库生成的模型中。
在代码中,我们在父表中插入(添加),然后插入子表,最后插入子表。代码类似于下面的示例:
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 如何维护这些对象的关系?这些插入范围安全吗?这会导致孤儿或孩子被插入错误的父母(现在我们没有看到这种情况发生,但它有可能)吗?
谢谢!
编辑(更正):
代码已更新以反映父插入发生在所有子插入之后。