Как использовать Castle ActiveRecord с функцией FILESTREAM в SQL Server 2008 - PullRequest
3 голосов
/ 29 января 2011

Я хотел бы сохранить изображения (C #) в базе данных с помощью функции FILESTREAM из SQL SERVER 2008.

Я настроил и включил FILESTREAM в SQL Server 2008 без каких-либо проблем.

Как использовать эту новую функцию из SQL Server через Castle ActiveRecord для сохранения изображений в базе данных.

Есть ли атрибут свойства, который я должен добавить, чтобы указать замку activerecord использовать FILESTREAM?

Предположим, у меня есть следующий класс:

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

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

Достаточно ли этого для использования функции FILESTREAM из SQL SERVER?Я не нашел много примеров использования Castle ActiveRecord (NHibernate) с FILESTREAM.

Спасибо!

Редактировать : я не уверен, что происходит.Кажется, что все, что я делаю, данные изображения сохраняются непосредственно в базе данных вместо использования файловой системы NTFS, как упомянуто в документации FileStream SQL SERVER 2008.

Вышеуказанное свойство PictureData теперь выглядит так:

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

Редактировать :

Я обнаружил, что Castle ActiveRecord создает поле PictureData в виде varbinary(max), но оно должно быть VARBINARY(MAX) FILESTREAM

Как вы скажете Castle ActiveRecord создать такое поле?

1 Ответ

3 голосов
/ 30 января 2011

Ну, я нашел ответ на свой вопрос.

Вот как вам нужно определить свои свойства 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; }

Это должно помочь некоторым людям там. Не много информации об этом !!

...