我有一个小项目,大约有20个表,其中行条目的内容大小很小,但表之间有很多关系。
我首先使用代码,并将所有导航属性设置为虚拟。
今天我注意到,当我使用Add方法向DbSet添加实体,并且实体有大约6-7个外键时,仅向DbContext添加大约2000个实体(不执行SaveChanges)大约需要30秒,CPU是坚持100%。
当实体有太多虚拟导航属性时,是否存在已知性能损失?
答案 0 :(得分:2)
EF很可能只跟踪更改,因为您的实体不跟踪实体,ef会花时间搜索依赖实体。
我的第一次尝试是尝试让您的实体“更改跟踪实体”,您可以通过将所有属性设置为虚拟,而不仅仅是导航属性。