NHibernate:使用 SchemaExport 重新创建数据库
我有一个关于正确处理数据库重新创建的问题。
在我的开发环境中,我经常使用以下命令重新创建数据库
_schemaExport.Drop(true, true);
_schemaExport.Create(createResult, true);
(我必须注意,我使用 hilo 生成器。)在我重新创建数据库后,有时新实体的保存会失败,因为“无法插入重复密钥...
”异常。
我的问题: 我是否必须重新初始化会话工厂(甚至可能是会话)才能与新的使用 hilo 的数据库正确同步?或者它能像现在一样工作吗?
任何提示表示赞赏!
LG
瓦拉帕
I have a question about correctly handling a recreation of a database.
In my dev environment I often recreate the database by using
_schemaExport.Drop(true, true);
_schemaExport.Create(createResult, true);
(I have to note, that I use the hilo generator.) Right after when I recreated the database, sometimes a save of a new entity fails because of "Cannot insert duplicate key...
" exception.
My question:
Would I have to reinitialize the session factory (and maybe even the session) to correctly come in sync with the new hilo-using database? Or sould it work just as is?
Any hint is appreciated!
Lg
warappa
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我想说,在重新创建数据库后,您肯定必须创建一个新会话。另一种选择是在重新创建数据库之前清除现有的数据库。
重新创建数据库后,ID 生成器将从头开始。这可能会导致某些生成的 ID 与先前存在的会话中另一个对象的 ID 相同。因此,您会遇到重复的键错误。
I'd say you definitely have to create a new session after recreating a database. Another option is to clear the existing one before recreating DB.
The ID generator will start from scratch after you've recreated the DB. This can cause some generated ID to be the same as ID of another object in previously existing session. Thus you're getting duplicate key errors.