2010-11-22 4 views
0

Meine Tabelle verfügt über mehrere int (11) und int (11) Nullable-Spalten. Mein Domain-Objekt hat das gleiche int und int? Eigenschaften.ValidateSchema gibt OverflowException

Als ich ValidateSchema laufen, bekomme ich eine Ausnahme ohne eine sehr gute Fehlermeldung:

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

nicht wie die Methode sieht tut etwas seltsam mit Reflektor:

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

Ich habe auch mehrere DateTime und DateTime? auf meinem Modell. Ich weiß, nhibernate auf mysql ist ein bisschen seltsam auf DateTime. Könnte das das Problem sein?

Antwort

0

Ich habe die Nhibernate-Quelle hinzugefügt und herausgefunden, dass sie auf eine Longtext-Spalte in meiner Datenbank zurückzuführen ist. Nicht unterstützt wird mein mysql-Dialekt.

EDIT:

Und here's the fix nutzte ich, um das Problem zu bekommen. Ich weiß nicht, ob es nur eine Problemumgehung für mein Validierungsproblem oder eine vollständige Reparatur ist ...

Verwandte Themen