Сохранение потоков BLOB-объектов с помощью NHibernate - PullRequest
8 голосов
/ 31 января 2009

Если у меня есть класс, объявленный как:

public class MyPersistentClass
{
     public int ID  { get; set; } 
     public Stream MyData  {get;set; }
}

Как я могу использовать сопоставления NHibernate для сохранения свойства MyData в базе данных и из нее?

1 Ответ

13 голосов
/ 12 марта 2009

Вы можете использовать Stream с использованием пользовательского типа и отображать его в соответствии с вашими потребностями хранения. Но есть некоторые проблемы с использованием объекта Stream, о которых я упоминал в своей серии блогов о отложенной потоковой передаче больших двоичных объектов и больших двоичных объектов с помощью NHibernate .

.

Что вам действительно нужно, так это объект Blob, который, в свою очередь, может создать поток для чтения данных. Поскольку Stream содержит информацию о позиции, с которой вы читаете, и ожидает закрытия и удаления, это может создать некоторые проблемы при использовании непосредственно в модели предметной области.

Я бы посоветовал вам взглянуть на серию блогов , а также на исходный код проекта NHibernate.Lob . Он включает в себя различные варианты отображения для такой проблемы. Пока что мало что задокументировано, но многое еще впереди.

...