2010-11-22 4 views
0

Ma table contient plusieurs colonnes null (11) et int (11). Mon objet de domaine a le même int et int? Propriétés.ValidateSchema donne OverflowException

Quand je lance ValidateSchema, je reçois une exception sans un très bon message d'erreur:

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() 

ne ressemble pas à la méthode ne fait rien étrange réflecteur en utilisant:

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"]); 
} 

J'ai aussi plusieurs DateTime et DateTime? sur mon modèle. Je sais que nhibernate sur mysql est un peu étrange sur DateTime. Est-ce que ceci pourrait être le problème?

Répondre

0

J'ai ajouté la source nhibernate, et j'ai découvert qu'elle était due à une colonne longtext dans ma base de données. Pas soutenu mon dialecte mysql il semble.

EDIT:

Et je here's the fix utilisé pour contourner le problème. Je ne sais pas si c'est juste une solution de contournement pour mon problème de validation ou un correctif complet si ...