如何使用Castle ActiveRecord和SQL Server 2008 FILESTREAM功能

时间:2011-01-29 06:58:07

标签: c# sql-server-2008 filestream castle-activerecord

我想使用SQL SERVER 2008中的FILESTREAM功能将图像(C#)保存到数据库中。

我已经在SQL Server 2008中配置并启用了FILESTREAM而没有任何问题。

如何使用SQL Server中的新功能通过Castle ActiveRecord将图像保存到数据库。

是否有一个属性属性我必须添加才能告诉castle activerecord使用FILESTREAM?

假设我有以下课程:

[ActiveRecord]
public class Picture : ActiveRecordBase
{
   [PrimaryKey]
   public int Id { get; set; }

   [Property]
   public byte[] PictureData { get; set; }
}

这足以使用SQL SERVER中的FILESTREAM功能吗?我没有找到使用Castle ActiveRecord(NHibernate)和FILESTREAM的很多例子。

谢谢!

编辑:我不确定发生了什么。看起来无论我做什么,图像数据都直接保存到数据库中,而不是使用SQL SERVER 2008 FileStream文档中提到的NTFS文件系统。

上面的PictureData属性现在如下所示:

[Property(SqlType = "VARBINARY(MAX)"]
public byte[] PictureData { get; set; }

修改

我发现Castle ActiveRecord将PictureData字段创建为varbinary(max)类型,但应该是VARBINARY(MAX) FILESTREAM

你如何告诉Castle ActiveRecord创建这样一个字段?

1 个答案:

答案 0 :(得分:3)

我找到了自己问题的答案。

这是您需要定义Castle ActiveRecord属性以启用FileStream的方法。

[Property(Unique = true, NotNull = true, SqlType = "UNIQUEIDENTIFIER ROWGUIDCOL", Default = "(newid())")]
public Guid ImageGuid { get; set; }

[Property(SqlType = "VARBINARY(MAX) FILESTREAM")]
public byte[] ImageFile { get; set; }

这应该可以帮助一些人。关于这个的信息不多!!