Я создаю приложение, которое создает каталог файлов. Данные каталога будут храниться в базе данных через NHibernate, но фактические файлы просто хранятся в файловой системе. Я абстрагировал интерфейс с файловой системой в интерфейс с именем IFileSystemAdaptor
.
Когда объект сохраняется из базы данных, мне нужно установить его свойство IFileSystemAdaptor FileSystemAdaptor
, чтобы его методы и свойства могли обращаться к файловой системе.
Например, пользователь может позже вызвать AddAttachment(string filename, Stream data)
для сохраняемого объекта. Это заставит его записать поток в указанное имя файла через его IFileSystemAdaptor
и добавить новое имя файла в его свойство AttachmenFileNames
, которое впоследствии будет сохранено в базе данных.
Где можно вставить код для установки свойства FileSystemAdaptor
для объектов, которые сохраняются в базе данных? Должен ли я добавить слой абстракции между Session / SessionFactory, который устанавливает свойство FileSystemAdaptor
перед возвратом объектов? Или я каким-то образом могу внедрить эту функцию в SessionFactory
, чтобы она возвращала объекты с уже установленным FileSystemAdaptor
?