【发布时间】:2011-06-15 12:35:30
【问题描述】:
假设我有一个客户正在填写来自网站的数据。使用的底层持久性是 Nhibernate。
现在一连串的事情是这样的
- 用户填写表格。
- 他提交了表格。
- 创建了休眠会话工厂,并通过客户对象将其保存到数据库中。
- 数据库使用nhibernate的本机生成器提交会话对象
- 但是在服务器的响应到达客户端之前发生了意外。与客户端的连接断开。
- 客户端看到页面未找到错误或请求超时错误。并且有一个他还没有注册的窘境。
- 于是他再次按下刷新按钮。并且同一组数据(尽管已提交到 database )已发送到服务器以进行数据库提交。
- 服务器看到数据并再次用不同的 id 注册同一个客户。
- 所以问题是这样的。现在同一个客户条目被重复了两次,因为连接被切断了。
现在有人可以告诉我如何进入这个场景。这样即使客户提交了他也只会识别一个条目并提交它,即使响应已被切断并按下刷新按钮?
【问题讨论】: