INSERT语句发生冲突

use*_*370 1 c# sql database linq-to-sql winforms

我在C#Winforms 2010中的项目并使用SQL Server express和Linq-to-SQL.我的项目让我异常:

INSERT语句与CHECK约束"CK_BarCode_Num"冲突.冲突发生在数据库"停车",表"dbo.TBL_Cards",列'BarCode_Num'

当我运行此查询时:

SELECT name, definition
FROM sys.check_constraints
WHERE name = 'CK_BarCode_Num'"
Run Code Online (Sandbox Code Playgroud)

输出显示以下定义:

Name: CK_BarCode_Num    
Definition: (datalength([BarCode_Num])=(13))"
Run Code Online (Sandbox Code Playgroud)

但在TBL_Cards数据库中,类型BarCode_Numvarchar(100)和后面的代码,我声明int的类型BarCode_Num.

我不知道在哪里设置datalength([BarCode_Num])=(13)

Dam*_*ver 5

检查约束是说你输入的Barcode_Num内容必须是13个字符长.

如果您尝试插入长度不超过13个字符的内容,我建议您查阅数据库的文档(或与设置它的人员交谈)以了解为什么应用此约束.

我们无法为您解答,我不建议更改检查约束而不理解它为什么存在于第一位.


DATALENGTH

返回用于表示任何表达式的字节数.

因为varchar,使用的字节数对应于字符数的1-1.因为nvarchar你需要除以2.