想把报表文件存放在SQL Server2005里,于是使用了SQL Server2005新增的VarBinary(MAX)类型的字段。
CREATE TABLE [dbo].[Report]
(
    
[Name] [nvarchar](255), -- 报表名称
    [ReportContent] [varbinary](max-- 保存报表文件的二进制格式
)

对应的Castle ActiveRecord的实体类为
public class ReportEntity
{
    [Property]
    
public System.String Name
    {
        
get { return this._name; }
        
set { this._name = value; }
    }
    
    [Property]
    
public System.Byte[] ReportContent
    {
        
get { return this._reportContent; }
        
set { this._reportContent = value; }
    }
}

结果发现再将此实体保存到数据库中的时候,ReportContent只要超过8000字节就会被截断。后来将它变成这样就没问题了:

public class ReportEntity
{
    [Property]
    
public System.String Name
    {
        
get { return this._name; }
        
set { this._name = value; }
    }
    
    [Property(ColumnType 
= "BinaryBlob", SqlType = "VARBINARY(MAX)", Length = 2147483647)]
    
public System.Byte[] ReportContent
    {
        
get { return this._reportContent; }
        
set { this._reportContent = value; }
    }
}

=====2008-5-7更新=====
其实不用这么复杂,只设置ColumnType="BinaryBlob"就好用。
posted on 2008-05-04 15:25  1-2-3  阅读(933)  评论(1编辑  收藏  举报