Мне интересно, есть ли относительно простой способ расширить NHibernate для поддержки F # дискриминационного объединения. Не только один IUserType или ICompositeUserType, но и нечто общее, что я могу повторно использовать независимо от фактического содержимого DU.
Например, предположим, что у меня есть свойство RequestInfo, которое является объединением, определенным как:
type RequestInfo =
| Id of int
| Name of string
Скомпилируется в абстрактный класс RequestInfo, с конкретными подклассами Id и Name. Я могу получить всю эту информацию просто отлично с отражением F #. В этом случае я мог бы сохранить его в базе данных с помощью "RequestInfo_Tag", "RequestInfo_Id", "RequestInfo_Name".
Как я новичок в NHibernate, какие проблемы я буду пытаться использовать для этого подхода? С более сложными делами будет невозможно справиться? Например, как насчет вложенных дискриминационных союзов? Есть ли способ "отменить" чтение остальной части соединения на другой ICompositeUserType?
Что еще более важно, это испортит мои запросы? Смысл, мне нужно знать фактические имена столбцов в БД; Я не смогу выполнить Criteria.Eq(SomeDiscUnion) и все это разобрался?
Я не ищу полный ответ "предоставить код", просто некоторые общие советы, если это стоит того, что стоит (и некоторые указатели на то, как), или если я просто переосмыслил свою модель.
Спасибо!
P.S. Не грубить, но если ваш ответ состоит из "use С#", это не очень полезно.