gpt4 book ai didi

nhibernate - 有没有一种实用的方法可以从标识列迁移到 hilo 键?

转载 作者:行者123 更新时间:2023-12-02 23:28:42 24 4
gpt4 key购买 nike

我使用的数据库严重依赖于标识列。然而,由于我们现在已将所有应用程序转移到 NHibernate,我想考虑使用 HiLo,就像 NHibernate 推荐的那样。有什么策略可以做到这一点,或者有什么常见问题需要注意吗?

最佳答案

您需要设置 NH 使用的表才能正确创建 HiLo 值。让 Schema Creator 根据您的映射定义创建表,并根据数据库中 ids 的当前状态设置值。

我相信(您需要验证这一点)hilo 生成的值是通过以下方式计算的:

hilo-id = high-value * max_lo + low-value

高值存储在数据库中,而 max_low 在映射文件中定义,低值在运行时计算。

<小时/>

NHibernate 还需要自己的连接和事务来确定和递增高值。因此,如果连接是由应用程序提供的,则它不起作用。

您仍然可以使用 seqhilo,NH 使用数据库序列来创建下一个高值,并且不需要单独的连接来执行此操作。这仅适用于支持序列的数据库,例如 Oracle。

<小时/>

更正:

同时,我必须自己实现它(之前,这只是理论:-)。所以我回来分享细节。

公式为:

next_hi = (highest_id / (maxLow + 1)) + 1

next_hi 是数据库中您需要更新的字段。 highest_id 是在数据库中找到的最高 ID。 maxLow 是您在映射文件中指定的值。不知道为什么它会增加一。除法是一个整数除法,它会截断小数位。

关于nhibernate - 有没有一种实用的方法可以从标识列迁移到 hilo 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1390078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com