Сохранение потоков BLOB-объектов с помощью NHibernate
Если у меня есть класс, объявленный как:
public class MyPersistentClass
{
public int ID { get; set; }
public Stream MyData {get;set; }
}
Как я могу использовать сопоставления NHibernate для сохранения свойства MyData в базе данных и из нее?
1 ответ
Вы можете использовать Stream с использованием пользовательского типа и отображать его в соответствии с вашими потребностями хранения. Но есть некоторые проблемы с использованием объекта Stream, как я упоминал в своей серии блогов о ленивой потоковой передаче больших двоичных объектов и больших двоичных объектов с помощью NHibernate.
Что вам действительно нужно, так это объект Blob, который, в свою очередь, может создать поток для чтения данных. Поскольку Stream содержит информацию о позиции, с которой вы читаете, и ожидает закрытия и удаления, это может создать некоторые проблемы при использовании непосредственно в модели предметной области.
Я бы посоветовал вам взглянуть на серию блогов, а также на исходный код проекта NHibernate.Lob. Он включает в себя различные варианты отображения для такой проблемы. Пока что мало что задокументировано, но многое еще впереди.