问题标签 [hilo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2157 浏览

nhibernate - HiLo 算法的最佳 MaxLo 值是多少?

在我目前的设计中,我有HiLo设置以拥有一个MaxLo. 1000这是不是太过分了?我可以将这个数字减少到类似的东西100并且仍然可以吗?

0 投票
2 回答
595 浏览

collections - NHibernate HiLo 不会在集合中的对象上生成 ID

我正在使用 NHibernate 和 HiLo 策略,我的问题是集合中对象的 ID 不是在 Session.Save() 上生成的(仅在 Transaction.Commit() 上)。例如:

这是我的代码:

映射:

0 投票
1 回答
372 浏览

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

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

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

(我必须注意,我使用的是hilo 生成器。)在我重新创建数据库之后,有时新实体的保存会因为" Cannot insert duplicate key..." 异常而失败。

我的问题: 我是否必须重新初始化会话工厂(甚至可能是会话)才能与新的使用 hilo 的数据库正确同步?还是让它按原样工作?

任何提示表示赞赏!


华拉巴

0 投票
1 回答
295 浏览

nhibernate - NHibernate、HiLo 和多对多关联

我有两个实体RolePermission,每个实体在数据库中都有它的表,并使用 HiLo 算法正确设置了 ID 生成。这工作正常。但是,数据库中还有一个表ROLE_PERMISSION_ASSIGNMENT ,它只包含上述两个表的外键,将实体绑定在一起。此表在我的应用程序中没有对应的实体。

Role实体的映射如下所示:

由于我没有ROLE_PERMISSION_ASSIGNMENT表的实体,因此我无法指定其 ID 的生成方式,因此在数据库中保存角色(包含一些权限)时,在ROLE_PERMISSION_ASSIGNMENT中创建相应条目时失败,因为它不提供主键。

有没有办法告诉 NHibernate也使用 HiLo 算法为ROLE_PERMISSION_ASSIGNMENT生成 ID?

非常感谢你。

0 投票
2 回答
2364 浏览

nhibernate - HiLo NHibernate id 生成器实现

我想使用“hilo”生成器,但没有任何完整的示例如何创建“特定”表,如 NH 文档所述,以及哪些值传递给它。以下代码片段取自 NH 教程

映射器

DB 表“Cat” CatId bigint NOT NULL Name varchar(16) NOT NULL Sex char(1) NULL Weight real NULL 默认情况下不会在数据库中创建任何内容。

“id”节点中的参数

给出“无效的对象名称'hi_value'”错误消息,没有它们我得到“无效的对象名称'hibernate_unique_key'。”

他们教程中显示的 Cuid.Comb 效果很好,但是当我在循环中添加 20K 猫对象时会产生 99.12% 的碎片。有人可以给我指出一个“hilo”实现的例子,或者给我一个我所缺少的提示吗?

谢谢。

0 投票
1 回答
599 浏览

nhibernate - nhibernate hilo Id 生成器生成奇怪的 Id 号

我按照惯例使用 nhibernate 3.2 映射。

这是我的代码。在我的 hilo 表中,NextHi 是 1。我删除了 User 表中的所有记录,然后在那里插入一个新用户。我插入的第一个用户的 ID 为 32768,而不是得到一个非常小的数字,例如 10 或 11。我不知道我是如何得到这个数字的。请让我知道我应该检查什么?

0 投票
1 回答
1320 浏览

java - hibernate HiLo - 所有实体的一张表

我看过这个问题

NHibernate HiLo - 所有实体的一张表

所以我读过

http://daniel.wertheim.se/2011/03/08/nhibernate-custom-id-generator/

我试图在休眠状态下做到这一点。hibernate 不检查属性哈希图中的“where”键,所以我尝试自己覆盖配置函数,但我无法读取或更新该值。

有没有现成的解决方案?我的代码如下。

myTableNameForHiloValues 表的结构如下:

实体名称 | 下一个高值

0 投票
3 回答
555 浏览

.net - SQL Server:如何在应用程序运行时避免或检测数据库还原

在数据库恢复之前,需要关闭我正在处理的系统。如果客户不这样做,他可能会遇到严重的问题,因为应用服务器的内存状态与数据库不匹配。损坏的数据库导致错误并且系统停止工作并且数据库无法使用可能需要一些时间。

所以我尝试检测这种情况并避免问题。

  • 应用程序服务器不一定保持连接活动,因此单用户模式和类似的东西很可能不会有帮助。
  • 我不在乎还原是否会失败或服务器是否会关闭或其他任何事情。它只是不应该忽视它
  • 数据库可以通过任何机器上的任何 sql server 工具恢复。我不能依赖我自己的工具。

有人已经解决了这样的问题吗?

我正在使用 SQL Server 2005 及更高版本、.NET (C#)、SMO。


编辑:

由于对应用程序设计的一些误解和讨论,我需要解释一下问题出在哪里。

Hi-Lo 生成器:该应用程序使用 NHibernate,它具有Hi-Lo id 生成器的 Hi-Values 缓存。Hi-Values 从数据库中读取并允许应用程序生成特定数量的主键,直到它需要返回数据库并获取另一个数字范围。存储在数据库中的 Hi-Values 只会增加,而不会减少(除非恢复旧版本的数据库)。这是 Hi-Lo 发生器的概念,不是我自己发明的,也不是我自己实现的

缓存:在缓存中,主键用于标识数据库中的记录。在正常使用数据库时,主键永远不会改变。在还原的情况下,主键不再标识相同的记录,并且缓存完全错误。它甚至无法检测到这一点。例如,它可能会导致在新记录中设置错误的外键。

无法将数据库还原与数据库的任何其他正常使用进行比较。还原破坏了所有数据处理规则。

我想许多应用程序在运行时保持连接打开,因此无法恢复。大多数其他应用程序可能会在数据库恢复时崩溃,然后它会尝试访问数据库。就我而言,它可能会继续运行一段时间,这是一个问题。

我猜大多数人甚至不会在应用程序运行时尝试恢复数据库。

理论上,在我的案例中证明,当应用程序仍在内存中时恢复数据库时出现完全错误的风险。我不想被告知这根本不是问题,只是因为大多数应用程序不处理它。

0 投票
1 回答
269 浏览

nhibernate - 在 Azure 上休眠 HiLo

我试图在 Azure SQL 中运行创建模式,但它失败了,因为我使用生成的 HiLo,Azure SQL 需要 CLUSTERED INDEX 并且默认情况下 HiLo 表没有任何索引,之前有人在 Azure 中尝试过 HiLo 吗?谁能指出我如何解决这个问题的正确方向。

谢谢

0 投票
1 回答
80 浏览

.net - Nhibernate 的 Pk 数据类型选择?

当我开始使用 nhibernate 时,我只是做了我一直使用递增 int 的事情。现在我对 nhibernate 和工作单元有了更多的了解,我觉得增加 int 并不是一个好方法(它们破坏了工作单元)。

我想知道我应该使用什么作为主键?我应该使用 GUID 还是 HILO?

我喜欢 GUID 问他们是独一无二的,但我不喜欢如果你开始获得一个巨大的数据库,他们会占用很多空间。

我没有使用过 HILO,但我认为您需要一个特殊的 hilo 表才能使其工作,这有点糟糕。

人们的想法是什么。

最后,当我有时间时,我想将旧代码转换为使用这种新的 PK 数据类型,以便我可以开始更好地利用工作单元。

将ok数据转换为PK的最佳方法是什么?使用我谈到的两种数据类型中的一种是否比另一种更容易转换?