当插入大量相互关联的嵌套对象时,最好先创建并保持内部entites以尊重外键关系并在层次结构中向上移动,或者最好用内部对象创建所有对象并坚持只有外层物体?到目前为止,我已经体验到,在执行后者时,实体框架似乎在智能地确定首先要插入关于关系的内容。但有人应该注意一个警告吗?第一种方法在我看来是经典的SQL逻辑,而后者似乎更符合实体框架的概念。
答案 0 :(得分:0)
一切都是为了管理数据损坏的风险并确保数据库的价值。
当您首先保留内部记录时,如果外部保存失败,您可能会遇到错误数据的可能性。根据您的应用需求,孤立的内部记录可能是从主要问题到轻微烦恼的任何地方。
当您将所有内容保存在一起时,如果单个记录失败,则整个保存将失败。
当然,如果内部记录在没有外部记录的情况下有意义(同样由您的业务需求决定),那么您可能会阻止应用程序的进展。
简而言之:如果内部记录依赖于外部,则保存在一起。如果内在是有意义的,请根据性能/可读性做出决定。
示例:
House
的含义没有Homeowner
。单独创建House
是可以接受的。
HSA
(房主协会)在没有Homeowner
的情况下没有意义。这些应该一起创建。
显然,这些例子在使用现有数据时是人为的,并且变得微不足道。出于这个问题的目的,我们假设两者都是同时创建的。