想把报表文件存放在SQL Server2005里,于是使用了SQL Server2005新增的VarBinary(MAX)类型的字段。
对应的Castle ActiveRecord的实体类为
结果发现再将此实体保存到数据库中的时候,ReportContent只要超过8000字节就会被截断。后来将它变成这样就没问题了:
=====2008-5-7更新=====
其实不用这么复杂,只设置ColumnType="BinaryBlob"就好用。
CREATE TABLE [dbo].[Report]
(
[Name] [nvarchar](255), -- 报表名称
[ReportContent] [varbinary](max) -- 保存报表文件的二进制格式
)
(
[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; }
}
}
{
[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; }
}
}
{
[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"就好用。