我理解并接受身份生成器会破坏工作单元,因为它需要在事务实际提交时先插入,如http://fabiomaulo.blogspot.com/2008/12/identity-never-ending-story 中所述。 .html _ 我知道替代方案以及为什么它们更好(与手头的问题有关,一般来说)。
我的问题是为什么实现存在,以及这些问题是否会影响 EF(纯粹的好奇心)。我见过的唯一真正的理由是:“NHibernate 需要身份,因为会话中的每个实体(它们被称为“持久实体”)都需要被识别。身份通常也用于确定数据库中是否已经存在记录(未保存的值)。”
但是,为什么它必须立即具有价值?为什么它不能推迟 INSERT 直到提交发生,提交,检索值,并根据返回的身份更新实体,然后插入/更新/不管它们?
不太重要的问题:EF 是否遇到同样的问题?我知道 ISession 是一个合适的 UoW 实现;EF 没有实现 UoW 模式,还是有不同的方法来处理这个问题,如果有,它是什么?