2011-01-29 61 views
3

我想使用FILESTREAM功能从SQL Server保存图像(C#)到数据库2008如何使用城堡的ActiveRecord与SQL Server 2008 FILESTREAM功能

我已经配置和SQL Server中启用FILESTREAM 2008没有任何问题。

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

是否有一个属性属性,我必须添加为了告诉城堡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; } 

编辑

我发现城堡的ActiveRecord创建PictureData字段作为varbinary(max)类型,但它应该是VARBINARY(MAX) FILESTREAM

你如何告诉Castle ActiveRecord创建这样一个领域?

回答

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; } 

这应该有助于一些人在那里。关于这个不多的信息!