NHibernate:使用 SchemaExport 重新创建数据库

发布于 2024-11-09 09:54:40 字数 443 浏览 6 评论 0原文

我有一个关于正确处理数据库重新创建的问题。

在我的开发环境中,我经常使用以下命令重新创建数据库

_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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒绊 2024-11-16 09:54:40

我想说,在重新创建数据库后,您肯定必须创建一个新会话。另一种选择是在重新创建数据库之前清除现有的数据库。

重新创建数据库后,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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文