木野狐(Neil Chen)

Focusd on Silverlight

假如我们需要在数据库中保存文件的二进制内容,以往的做法是在 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 木野狐(Neil Chen) 阅读(432) 评论(0)  编辑 收藏 所属分类: .NET 综合Linq/C#3.5

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: