我有一个带有序列和触发器的表,因此在将它插入到数据库时会创建新的 ID。
如何在调用 SaveChanges() 之前获取新的对象 ID?
我需要这个 id 作为新对象和其他对象之间的链接。
我想在调用 SaveChanges 之前执行此操作,因为我希望可以选择回滚。
最佳答案
如果不调用 SaveChanges()
就无法获取它。想想看。 ID 来自数据库。 SaveChanges()
是引起与数据库通信的第一件事。
如果你想撤销,你有几种选择:
- 在很多情况下,您不需要在插入时知道客户端的 ID。只需建立关系就足够了。
- 使用客户端可生成的 ID,例如 GUID。
- 使用
TransactionScope
进行“真正的”数据库事务。 - 执行撤消 (
DeleteObject
) 而不是回滚。
关于c# - 如何获取数据库序列生成的新对象 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289934/