У меня проблема с NHibernate и типом данных postgresql POINT (хотя я считаю, что это общая проблема для всех тех, кто пытается отобразить SQL TYPE, который не покрывается NHibernate SqlTypes).
MyКласс Data.Point имеет два открытых объекта: xcoordinate и ycoordinate.
Моя первая попытка была попытка реализовать интерфейс IUserType, но вскоре я обнаружил, что проблема возникает раньше, на этапе отображения:
MappingException не было обработано кодом пользователя:
Невозможно определить тип для: Data.PointUserType, Data.Point, для столбцов: NHibernate.Mapping.Column (координаты)
IЯ очень новичок в NHibernate, но мне кажется, что я могу создать новый тип, только если столбец в базе данных имеет известный тип (один из типов float, int, varchar и все «классические», но не геометрическийте, которые мне нужны).
Мне удалось сопоставить мой POINT с двумя различными свойствами, сопоставив координаты [0] и координаты [1].Но это полезно только для запросов SELECT и UPDATE, поскольку для INSERT postgresql будет жаловаться на то, что «координаты» не могут быть обнуляемыми.
Кроме того, я не могу найти актуальную версию расширений NHibernate Spatial, и я быскорее, у меня есть контроль над моим типом POINT, так как я буду использовать этот тип очень редко, и поэтому я бы предпочел не загружать все сборки NHibernate Spatial (предположим, что они активно разрабатываются, иначе я все равно буду держаться подальше от них).
Мои последние мысли о том, что мне нужно возиться с SQL Generation NHibernate (поскольку некоторая часть SQL для вставки будет '(a, b)' :: point , что-то очень специфическое) и, может быть, это слишком хлопотно (может быть, нет, я бы хотел это проверить).
Я довольно новичок в NHibernate, но я впадаю в отчаяние.Кто-нибудь может указать мне куда-нибудь?