如何将 Castle ActiveRecord 与 SQL Server 2008 FILESTREAM 功能结合使用

发布于 2024-10-15 04:04:53 字数 1022 浏览 2 评论 0原文

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

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

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

我是否必须添加一个属性才能告诉 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 创建这样一个字段?

I would like to save images (C#) to the database by using the FILESTREAM feature from SQL SERVER 2008.

I've configured and enabled FILESTREAM in SQL Server 2008 without any problem.

How do I use this new feature from SQL Server through Castle ActiveRecord to save images to the database.

Is there a property attribute that I have to add in order to tell castle activerecord to use FILESTREAM ?

Suppose I have the following class:

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

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

Is this sufficient to use the FILESTREAM feature from SQL SERVER? I haven't found much example using Castle ActiveRecord(NHibernate) with FILESTREAM.

Thanks!

Edit: I'm not sure what's going on. It seems like whatever I do, the image data is saved directly into the database instead of using the NTFS file system as mentionned in the SQL SERVER 2008 FileStream documentation.

The above PictureData property now looks like this:

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

Edit:

I found out that Castle ActiveRecord creates the PictureData field as a varbinary(max) type but it should be VARBINARY(MAX) FILESTREAM

How do you tell Castle ActiveRecord to create such a field?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我的影子我的梦 2024-10-22 04:04:53

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

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

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

Well I found the answer to my own question.

This is how you need to define your Castle ActiveRecord properties to enable 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; }

This should help some people out there. Not many info about this!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文