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