7

我正在使用 SQL Server,并且大多数表都有 int 类型的标识列。而现在,我刚刚看到一本书,它告诉我们使用这种机制不是一个好主意。使用 NHibernate 作为 ORM 时,使用标识列的缺点/优点是什么?

4

2 回答 2

5

我不是 NHibernate 专家,但据我了解,使用标识列会破坏 UnitOfWork 并导致额外的数据库往返。

Fabio Maulo (当时是 NHibernate 的项目负责人,我不确定他今天是否还在)有一篇博文详细解释了这一点:
身份:永无止境的故事

这是另一个(更长的)博客文章,其中包含示例代码:
NH2.1.0:生成器行为解释

但是,请注意,这两篇博文都存在大约 3 年之久,都在谈论 NH 2.1.0,而截至今天的当前版本是 NH 3.3。但我认为 Fabio 所描述的问题今天仍然存在。

于 2012-05-29T21:29:53.870 回答
3

它们是否是身份列没有区别。ORM 的作用是将数据实体映射到数据库,而不是指示数据库结构/设计。我使用了一个带有标识列的实现,它工作正常。

于 2012-05-29T20:53:42.517 回答