【发布时间】:2009-10-25 10:25:42
【问题描述】:
我在不止一个地方阅读过使用 NHibernate 的标识符作为 主键被认为是一种不好的做法,因为 id 是在服务器端生成的 因此我们需要来自服务器的关于生成的 id 的回复。 (我想我也看过 Ayende 的帖子说 ms-sql 服务器可能有问题 生成标识符,这可能会导致主键违规)
现在,假设我有一个非常简单的域模型:博客和帖子。每个博客都可以拥有的地方 许多帖子,每个帖子都属于完全一个博客(一对多关系) 但我们只保存帖子 -> 博客关系而不是博客 -> 帖子
现在假设我使用 NHibernate WITH Idenitifer Id Generation 这样我不使用级联,所以我在我的 c# 代码中有这样的内容:
SaveBlogInTransaction(blog1);
SavePostsInTransaction(blog1posts);
现在,我的问题是:如果插入只能在我的代码中的一个地方完成
(不存在并发问题),是否保证帖子与数据库中博客的连接有效?
我的意思是让我们看看 Posts 的表架构:
PostId、PostName、PostType、BlogId
是否保证 BlogId 有效?
注意:每个方法都作为一个事务工作,最后它会提交到数据库
【问题讨论】:
标签: nhibernate nhibernate-mapping