Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 亚音速:表柱最大长度(超过)_C#_Mysql_Subsonic_Subsonic2.2 - Fatal编程技术网

C# 亚音速:表柱最大长度(超过)

C# 亚音速:表柱最大长度(超过),c#,mysql,subsonic,subsonic2.2,C#,Mysql,Subsonic,Subsonic2.2,因此,我们正在使用亚音速作为我们的一个项目的DAL/ORM。一切都很顺利(数据库已经存在,所以我们在上面使用了亚音速),但是,有时我们会遇到一个异常,比如整数超过了最大长度。在本例中,我们的MySql字段是一个int(4)签名字段。根据MySql文档,这将允许以下范围: -2147483647至2147483647 现在,我的问题是,在亚音速中MaxLength是如何规定的?是数字吗?因为这意味着它只允许-9999到9999,对吗?这似乎是一个相当大的差异,我希望不是这样,否则我们会有很多其他问

因此,我们正在使用亚音速作为我们的一个项目的DAL/ORM。一切都很顺利(数据库已经存在,所以我们在上面使用了亚音速),但是,有时我们会遇到一个异常,比如整数超过了最大长度。在本例中,我们的MySql字段是一个int(4)签名字段。根据MySql文档,这将允许以下范围:

-2147483647至2147483647

现在,我的问题是,在亚音速中MaxLength是如何规定的?是数字吗?因为这意味着它只允许-9999到9999,对吗?这似乎是一个相当大的差异,我希望不是这样,否则我们会有很多其他问题

谢谢,
-Steve使用Reflector,并深入到ActiveRecord的保存功能(调用ValidateColumnSettings):

如果变量为null,则标志设置为true。因此,是的,它超出了位数(请参阅:ToString().Length)。这似乎没有任何意义,因为MySql不使用数据类型的length属性来确定基于整数的值的位数


这是亚音速2.2。

如果int(4)是-2147483647到2147483647,那么4指的是字节数,而不是位数。另请参阅更多信息:无法保存:-字段名-超过最大长度4Robert,问题是我们试图将10444的值保存到int(4)数据库字段中,这应该可以保存得很好。但是,我们遇到上面的异常:无法保存:-字段名-超过最大长度4如果有人想知道,可以通过关闭ValidateWhenSaving属性(将其设置为false)禁用此验证。默认情况下,它在RecordBase的构造函数中启用。这就解决了我们的问题。如果可以通过亚音速配置为我们生成,那就太好了,这样我们就可以在我们认为合适的时候启用/禁用它。
 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));
        }