是否可以从HiLo切换到GUID.comb?据我所知,后者结合了HiLo的优势,即在客户端管理Ids而不是需要调用DB来获取新ID,其优点是不可能用完ID。

当前,HiLo生成的IDs太大了,以至于Int32(本来应该是Int64,但这更像是我的前任的WTF)还不够大。我们可以更改为Int64,但这仅意味着我们将在稍后而不是更快的时间内遇到问题。

由于ID不需要有意义,因此切换到GUID似乎是合乎逻辑的。但是,由于我从未尝试过进行这种转换,所以我想知道这里是否有人可以帮助我评估类似的影响。

最佳答案

实际上,切换到int64通常就足够了。请记住,您还要添加32位,将id空间乘以+/- 20亿。您确定还不够吗?

关于切换到Guid,涉及(假设有 Activity 的DB):

  • 创建新的pk/fk列
  • 用新值
  • 填充pk列
  • 根据旧的
  • 填充fk列
  • 删除当前的外键和主键
  • 删除旧的pk/fk列
  • 创建新的主键和外键
  • 更改id属性类型和生成器(这是涉及.net代码的唯一步骤)

  • 无论如何,虽然GUID提供了“无限”的ID并且易于生成,但它也具有缺点,即它的大小是两倍(128位),并且手工操作稍难(例如,调试时您将依赖于复制和粘贴)

    关于nhibernate - 从nHibernate HiLo切换到GUID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4863484/

    10-13 01:02