根据MSDN docs,Column类型/元素的DbType属性/属性仅用于创建数据库。
然而,今天,当尝试将数据提交到SQLCE数据库上的IMAGE列时(不确定是否只在CE上),我得到了'数据被截断为8000字节'的例外。这是因为DbType仍被定义为SQLCE不支持的VARBINARY(MAX)。在DbType中将类型更改为IMAGE可以解决问题。
那么Linq2SQL属性还存在哪些其他惊喜?这是一个错误还是打算?我应该向MS报告吗?
更新
从Guffa得到答案后,我测试了它,但似乎对于NVARCHAR(10),添加一个11字符长度的字符串会导致SQL异常,而不是Linq2SQL。
The data was truncated while converting from one data type to another.
[ Name of function(if known) = ]
A first chance exception of type 'System.Data.SqlServerCe.SqlCeException'
occurred in System.Data.SqlServerCe.dll
答案 0 :(得分:2)
如果您要创建一个表,DbType只是 required ,但这并不意味着在其余时间忽略它。
例如,如果您定义一个大小为100的VarChar列,如果发送长度超过100个字符的字符串,即使数据库中的字段实际上可以容纳字符串,也会出现异常。
文档说如果不需要,则不应指定DbType,因为数据类型是从您使用的值推断出来的。但是,在某些情况下,您可能不希望它使用推断的DbType。
答案 1 :(得分:1)
肯定听起来像MSDN文章可能会误导......然而,LINQ-to-SQL虽然还活着,却没有获得大量的开发时间,所以我不会屏住呼吸等待更新
您可以在连接上发帖,或者可以在MSDN页面上添加备注(社区内容)。