ValidateSchema дает OverflowException - PullRequest
0 голосов
/ 22 ноября 2010

В моей таблице есть несколько столбцов типа int (11) и int (11), которые могут иметь значение NULL.Мой объект домена имеет одинаковые int и int?properties.

Когда я запускаю ValidateSchema, я получаю исключение без очень хорошего сообщения об ошибке:

   at System.Convert.ToInt32(UInt64 value)
   at System.UInt64.System.IConvertible.ToInt32(IFormatProvider provider)
   at System.Convert.ToInt32(Object value)
   at NHibernate.Dialect.Schema.MySQLColumnMetadata..ctor(DataRow rs)
   at NHibernate.Dialect.Schema.MySQLTableMetadata.GetColumnMetadata(DataRow rs)
   at NHibernate.Dialect.Schema.AbstractTableMetadata.AddColumn(DataRow rs)
   at NHibernate.Dialect.Schema.AbstractTableMetadata.InitColumns(IDataBaseSchema meta)
   at NHibernate.Dialect.Schema.AbstractTableMetadata..ctor(DataRow rs, IDataBaseSchema meta, Boolean extras)
   at NHibernate.Dialect.Schema.MySQLTableMetadata..ctor(DataRow rs, IDataBaseSchema meta, Boolean extras)
   at NHibernate.Dialect.Schema.MySQLDataBaseSchema.GetTableMetadata(DataRow rs, Boolean extras)
   at NHibernate.Tool.hbm2ddl.DatabaseMetadata.GetTableMetadata(String name, String schema, String catalog, Boolean isQuoted)
   at NHibernate.Cfg.Configuration.ValidateSchema(Dialect dialect, DatabaseMetadata databaseMetadata)
   at NHibernate.Tool.hbm2ddl.SchemaValidator.Validate()

Не похоже, что метод делает что-то странное, используя отражатель:

public MySQLColumnMetadata(DataRow rs) : base(rs)
{
    base.Name = Convert.ToString(rs["COLUMN_NAME"]);
    object obj2 = rs["CHARACTER_MAXIMUM_LENGTH"];
    if (obj2 != DBNull.Value)
    {
        base.ColumnSize = Convert.ToInt32(obj2);
    }
    obj2 = rs["NUMERIC_PRECISION"];
    if (obj2 != DBNull.Value)
    {
        base.NumericalPrecision = Convert.ToInt32(obj2);
    }
    base.Nullable = Convert.ToString(rs["IS_NULLABLE"]);
    base.TypeName = Convert.ToString(rs["DATA_TYPE"]);
}

У меня также есть несколько DateTime и DateTime?на моей модели.Я знаю, что nhibernate на mysql немного странный на DateTime.Может ли это быть проблемой?

1 Ответ

0 голосов
/ 22 ноября 2010

Я добавил источник nhibernate и обнаружил, что это связано с длинным текстовым столбцом в моей базе данных. Не поддерживается мой диалект mysql похоже.

EDIT:

И вот исправление Я использовал, чтобы обойти эту проблему. Не знаю, если это просто обходной путь для моей проблемы проверки или полного исправления ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...