Linq to SQL 中保存大值数据类型

假如我们需要在数据库中保存文件的二进制内容,以往的做法是在 SQL Server 中使用 image 字段类型来存放。

按照我上篇帖子里提到的 Model -> DB 的开发方式,如果我们在 dbml 的设计视图中设置一个类属性的数据类型是 byte[] (CLR 类型)。
那么,db.CreateDatabase() 自动生成的数据库 schema 中,对应的数据库字段类型将是 varbinary(8000).

如果我们上传一个文件保存到该字段中,会发现类似这样的错误:

将截断字符串或二进制数据。语句已终止。...

解决的办法是在 dbml 设计视图中,将字段的 Server Data Type 设置为 varbinary(max) 即可。

在 SQL Server 2005 中,已经不推荐使用 image, text, ntext 这样的大值数据类型,取而代之的是 varbinary(max), varchar(max) 和 nvarchar(max). 其好处是这些标注 max 的字段类型能够支持 varbinary(n), varchar(n), nvarchar(n) 的大多数操作函数和其他一些重要特性。不再需要区分对待。

posted on 2008-05-15 12:40  NeilChen  阅读(1155)  评论(0编辑  收藏  举报

导航