代码之家  ›  专栏  ›  技术社区  ›  leppie

影响运行时行为的column.dbtype

  •  2
  • leppie  · 技术社区  · 16 年前

    根据 MSDN docs ,列类型/元素的dbtype属性/属性仅用于创建数据库。

    然而,今天,当试图将数据提交到sqlce数据库的image列(不确定是否只在ce上)时,我得到了一个异常:“数据被截断到8000字节”。这是由于dbtype仍被定义为varbinary(max),而sqlce不支持该定义。将dbtype中的类型更改为image可解决此问题。

    那么,linq2sql属性还有什么惊喜呢?这是一个错误还是有意的?我应该向女士汇报吗?

    更新

    从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
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Guffa    16 年前

    只有dbtype 必修的 如果要创建一个表,但这并不意味着它会被忽略。

    例如,如果定义一个大小为100的varchar列,那么如果发送的字符串长度超过100个字符,即使数据库中的字段实际上可以容纳该字符串,也会得到一个异常。

    文档指出,如果不需要dbtype,则不应指定它,因为数据类型是根据所使用的值推断出来的。但是,在某些情况下,您可能不希望它使用推断的dbtype。

        2
  •  1
  •   Marc Gravell    16 年前

    听起来这篇文章可能会误导…然而,linq to sql虽然还活着,却没有得到大量的开发时间,所以我不会屏息等待更新。

    您可以在connect上发布,或者在msdn页面(社区内容)上添加注释。