Jun 10, 2009 17:52
В свежей версии NHibernate добавлена полезная фича по экранированию зарезервированных символов в базе данных. Проблема в том, что MySQL Connector/NET отдает эту информацию не так, как ее получают авторы NH. В результате картина маслом: свежачок не работает вообще.
При этом:
1) Интерфейс по получению списка зарезервированных слов сделан Microsoft. Конкретный вид результата не оговаривается (отлично, блин!).
2) NHibernate использует как будто бы нормальные умолчания, которые, по-видимому, работают в других провайдерах.
3) MySQL Connector использует другое имя поля, из-за чего и падает NH. При этом проблема исправлена в каком-то бранче, но не в основной ветви, из-за чего даже самая последняя версия этого исправления не содержит.
Вывод: надо править. Коннектор править не удается по причине отсутствия каких-то ключей. Да и NH ближе, так что правим его. Походу приходится перекомпилировать кэши и прочее барахло. Ну ладно, работает.
Для очистки совести пишу баг в хибернейтовский трекер. Мне нравится ответ: "мы уберем поддержку этой фичи для MySQL, а если у тебя есть патч, то сделай его отдельным вопросом". И через шесть минут - "кто-то уже создал такую подзадачу в другой задаче". Так что мое обращение закрыли как дубликат неизвестно чего.
Теперь думаю - писать патч или нет? Хорошо бы его проверить на разных базах, а это головная боль еще та. А потом еще снова скажут "дубликат", не указав, дубликат чего конкретно. В общем, пользуясь случаем, передаю приветы Open Source community вообще, и NHibernate и MySQL Connector/NET в частности. Гм.
работа,
open source,
программирование,
mysql,
mysql connector/net,
nhibernate