я работаю с устаревшей базой данных тупо с индексом, состоящим из столбца идентификатора символа и двух столбцов символа, которые составляют дату и время соответственно. Я создал ICompositeUserType
для столбцов даты и времени для сопоставления с одним свойством .NET DateTime
моей сущности, которое работает само по себе, когда не является частью идентификатора. Мне нужно каким-то образом использовать составной идентификатор с сопоставлением ключевых свойств, который включает в себя мой ICompositeUserType
для сопоставления с двумя столбцами даты и времени символа. Очевидно, с моей версией Fluent NHibernate, CompositeIdentityPart
не имеет метода CustomTypeIs()
, поэтому я не могу просто сделать следующее в моем переопределении:
mapping.UseCompositeId()
.WithKeyProperty(x => x.Id, CommonDatabaseFieldNames.Id)
.WithKeyProperty(x => x.FileCreationDateTime)
.CustomTypeIs<FileCreationDateTimeType>();
что-то подобное возможно даже с NHibernate, не говоря уже о Fluent? Я не смог ничего найти по этому поводу.
UPDATE:
после более внимательного прочтения документации NHibernate я обнаружил, что NHibernate поддерживает составные идентификаторы компонентов , но не похоже, что он поддерживает пользовательские типы (например, IUserType
и ICompositeUserType
) для составных идентификаторов. Кроме того, версия Fluent, которую я имею, не имеет поддержки NHibernate для поддержки составных идентификаторов компонентов (см. выпуск 387 и выпуск 346 ). я, вероятно, попытаюсь обновить все мое решение, посмотреть, работает ли оно, и опубликовать ответ на свой вопрос, если это произойдет ... если только кто-то не скажет мне без меня об этом ... 8о)