首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SubSonic: MaxLength of TableColumn (exceeding)

SubSonic: MaxLength of TableColumn (exceeding)
EN

Stack Overflow用户
提问于 2010-01-20 06:34:00
回答 1查看 461关注 0票数 1

因此,我们正在使用SubSonic作为我们其中一个项目的DAL/ORM。一切都运行得很顺利(数据库已经存在,所以我们在它上面使用了SubSonic ),然而,有时我们会遇到一个异常,比如整数超过了最大长度。在本例中,我们的MySql字段是一个带符号的整数(4)。根据MySql文档,它将允许以下范围:

-2147483647到2147483647。

现在,我的问题是,MaxLength是如何在SubSonic中口述的?是位数吗?因为这意味着它只允许-9999到9999,对吗?这似乎是一个相当巨大的差异,我希望不是这样,否则我们会有一大堆其他问题。

谢谢,-Steve

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-20 07:13:43

使用反射器,并向下钻取到ActiveRecord的Save函数(调用ValidateColumnSettings):

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

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

https://stackoverflow.com/questions/2097694

复制
相关文章

相似问题

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