NHibernate: как вставить С# [Guid] в столбец MySQL [BINARY(16) DEFAULT (uuid_to_bin(uuid(),1))]?

Среда: MySQL Server 8.0, .NET Core 3.1, MySql.Data 8.0.28, NHibernate 5.3.11

У меня есть следующая таблица:

      CREATE TABLE `Master` (
  `Row_Id` char(36) NOT NULL DEFAULT (uuid()),
  `Path` varchar(1000) NOT NULL,
  PRIMARY KEY (`Row_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

Ниже приводится определение сущности и сопоставление:

      public class MasterEntity
{
    public virtual Guid RowId { get; set; }
    public virtual string Path { get; set; }
}

internal sealed class MasterMap : ClassMapping<MasterEntity>
{
    public MasterMap()
    {
        Table("Master");

        Id
        (
            x => x.RowId,
            map =>
            {
                map.Column("Row_Id");
                map.Generator(Generators.GuidComb);
            }
        );

        Property(x => x.Path, map => { map.Column("Path"); map.NotNullable(true); map.Type(TypeFactory.GetAnsiStringType(1000)); });
    }
}

Ниже показано, как я INSERTэтот объект с использованием NHibernate:

      using(ISession session = SessionFactory.OpenSession())
{
    MasterEntity entity = new MasterEntity();
    entity.Path = "c:\whatever";
    session.Save(entity);
    session.Flush();
}

Это вставляет запись правильно. До сих пор все в порядке.

Теперь я изменяю определение Row_Idстолбец, как показано ниже:

      `Row_Id` binary(16) NOT NULL DEFAULT (uuid_to_bin(uuid(),1)),

Я ничего не меняю в своем коде C#. Сейчас session.Flush();вызов выдает исключение ниже:

      NHibernate.Exceptions.GenericADOException: could not execute batch command.[SQL: SQL not available]
 ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Data too long for column 'Row_Id' at row 1

Ошибка выглядит очевидной. В С# 32, а длина столбца 16.
Какие изменения мне нужно внести в мое сопоставление или определение объекта (или другую часть кода), чтобы вставить С# Guidв BINARY(16) DEFAULT (uuid_to_bin(uuid(),1))столбец?

0 ответов

Другие вопросы по тегам