dav*_*v_i 29 c# asp.net-mvc entity-framework
我一直在使用Add()
并遇到一个问题,当Add
一个孩子时,父实体在数据库中被复制了.使用Attach()
解决了这个,但我想知道为什么而不是盲目地磕磕绊绊.
And*_*eza 31
好吧,当你使用Attach
时告诉上下文实体已经在数据库中,SaveChanges
对附加实体没有影响.Add
另一方面,更改上下文中实体的状态(如果它已经存在)Added
,这意味着它将始终在您调用时将实体插入数据库中SaveChanges
.
这就是区别.
如果是 ef-core
附加适用于将新实体添加到具有导航属性的数据库的情况。附加仅将新创建的项目标记为已更改。
假设您要向行业添加一名新员工。如果该行业已存在于数据库中,则它必须有一个 ID。并且您添加的 Employee 尚未插入到数据库中,因此它还没有 ID(我在这里谈论的是行 ID)。
所以 attach 的作用是因为行业已经有了一个 ID。附加标记为Unchanged。而您尚未附加 ID 的 Employee 将其标记为已添加。
您可以在此处阅读有关此主题的更多信息:https : //www.learnentityframeworkcore.com/dbcontext/modifying-data#attach
归档时间: |
|
查看次数: |
14887 次 |
最近记录: |