【问题标题】:How to use Castle ActiveRecord with SQL Server 2008 FILESTREAM feature如何将 Castle ActiveRecord 与 SQL Server 2008 FILESTREAM 功能一起使用
【发布时间】:2011-01-29 06:58:06
【问题描述】:

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

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

如何通过 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; }

编辑

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

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

【问题讨论】:

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


    【解决方案1】:

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

    这就是您需要定义 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; }
    

    这应该可以帮助一些人。这方面的信息不多!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多