Что бы ваш подход с NHibernate сделать следующее:
Когда Comment
вставляется в БД, а его свойство Text
вставляется в столбец Text
(из-за отображения), вставить в столбец TextHash
хэш этого значения свойства.NHibernate: вставив дополнительный вычисляемый столбец
Это кажется тривиальным, если я нахожу карту TextHash
, но как мне это сделать без отображения?
Мне не нужна эта модель в домене, ее оптимизация уровня DB (я бы использовал рассчитанные HashBytes, если не для ограничения длины).
Я знаю, что могу использовать частный, но это не совсем упорство, невежественное. Так что это вроде как против сильных сторон NH, как я их вижу. –
Боюсь, я не вижу недостатка в объявлении частного поля. Семантически, объявляя это таким образом, вы, в основном, говорите, что это «локальная деталь реализации», она «не должна использоваться извне сущности», а остальная часть приложения остается блаженно не осведомленной о вычисленном поле. Вам нужно поместить логику хэширования _somewhere_, и я могу думать только о двух местах: модели и базе данных. Во всяком случае, не стесняйтесь пренебрегать. :) –
Я вижу третье место, примерами которого являются IUserType или IInterceptor, и который не привязывает алгоритм хэширования непосредственно к объекту. Я просто не вижу, какая точка расширения NHibernate применима к моему варианту использования. –