mysql - 如何在 MySql 数据库中使用 guid.comb 策略

标签 mysql nhibernate orm fluent-nhibernate guid

是否可以使用 guid.comb 策略通过使用 Nhibernate 的 Mysql Db 进行身份生成?

当我使用它时

   mapping.Id(x => x.Id)
        .Column("row_guid")
        .CustomType(typeof(string))
        .GeneratedBy.GuidComb()
        .Length(36);

我最终得到了

----> System.InvalidOperationException : Identity type must be Guid

在MySql场景下有没有办法克服这个障碍?

编辑:
我在 guidint 之间没有选择。这是来自 MSSql 的旧数据库的端口

最佳答案

这是常见问题,尤其是在将 MSSql 应用程序移植到 MySql 时。
正如 David 所说,实现一个简单的 CustomIdGenerator,它是 GuidCombGenerator 的包装器。这为您提供了字符串形式的 Guid。

using NHibernate.Engine;
using NHibernate.Id;

namespace NHibernateMaps
{
  public class GuidStringGenerator : IIdentifierGenerator
  {
    public object Generate(ISessionImplementor session, object obj)
    {
      return new GuidCombGenerator().Generate(session, obj).ToString();
    }

  }
}

并在映射中将其指定为

 mapping.Id(x => x.Id)
    .Column("row_id")
    .CustomType(typeof(string))
    .GeneratedBy.Custom(typeof(GuidStringGenerator))
    .Length(36);

关于mysql - 如何在 MySql 数据库中使用 guid.comb 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995579/

相关文章:

entity-framework - Entity Framework 、应用层和关注点分离

php - Zend Framework TDG 与 Doctrine

.net - 带有 nhibernate 的 mysql 连接太多

NHibernate Left Join with condition or null

nhibernate - NHibernate 应该如何更新映射为版本的属性

mysql - 从另一个表中插入带有自动增量列的记录新表

python - 不支持对 CharField 进行查找 'product_name' 或不允许在该字段上进行连接。 Django Python ORM

mysql UPDATE 说列不能为空。为什么它是空的?

MySql:如何处理条件排序

MySQL 外键引用的表名总是强制小写