因此,我们正在使用SubSonic作为我们其中一个项目的DAL/ORM。一切都运行得很顺利(数据库已经存在,所以我们在它上面使用了SubSonic ),然而,有时我们会遇到一个异常,比如整数超过了最大长度。在本例中,我们的MySql字段是一个带符号的整数(4)。根据MySql文档,它将允许以下范围:
-2147483647到2147483647。
现在,我的问题是,MaxLength是如何在SubSonic中口述的?是位数吗?因为这意味着它只允许-9999到9999,对吗?这似乎是一个相当巨大的差异,我希望不是这样,否则我们会有一大堆其他问题。
谢谢,-Steve
发布于 2010-01-20 07:13:43
使用反射器,并向下钻取到ActiveRecord的Save函数(调用ValidateColumnSettings):
if ((!flag && (column.MaxLength > 0)) && ((column.DataType != DbType.Boolean) && (currentValue.ToString().Length > column.MaxLength)))
{
Utility.WriteTrace(string.Format("Max Length Exceeded {0} (can't exceed {1}); current value is set to {2}", column.ColumnName, column.MaxLength, currentValue.ToString().Length));
this.errorList.Add(string.Format(this.LengthExceptionMessage, str, column.MaxLength));
}如果变量为空,则将标志设置为true。所以,是的,它是从位数开始的(参见: ToString().Length)。这似乎没有任何意义,因为MySql不使用数据类型的长度属性来确定基于整数的值的位数。
这是SubSonic 2.2。
https://stackoverflow.com/questions/2097694
复制相似问题