首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValidateSchema给了OverflowException

ValidateSchema给了OverflowException
EN

Stack Overflow用户
提问于 2010-11-22 19:06:24
回答 1查看 165关注 0票数 0

我的表有几个int(11)和int(11)可空的列。我的域对象有相同的int和int?属性。

当我运行ValidateSchema时,我得到了一个异常,但没有显示非常好的错误消息:

代码语言:javascript
复制
   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()

看起来该方法并没有使用reflector做任何奇怪的事情:

代码语言:javascript
复制
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?在我的模型上。我知道mysql上的nhibernate在DateTime上有点奇怪,这就是问题所在吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-22 22:23:58

我添加了nhibernate源代码,并发现这是由于我的数据库中的一个长文本列造成的。似乎不支持mysql方言。

编辑:

here's the fix我过去常常绕过这个问题。我不知道这只是我的验证问题的一种变通办法,还是完全修复了……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4244762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档