FluentNHibernate или сопоставление порта с NHibernate по коду - PullRequest
7 голосов
/ 23 ноября 2011

У меня есть несколько проектов, использующих NH и FNH для генерации отображений (некоторые Fluent, некоторые Automapped). Есть еще некоторые ошибки и недостающие функции, которые мне нужны, но кажется, что FNH может умереть из-за преобразования по коду, встроенного в NHibernate.

Вопрос: Внести вклад в FNH или перенести сопоставления в сопоставление по коду или исправить, исправить проблемы / реализовать функции там?

Ответы [ 3 ]

7 голосов
/ 23 ноября 2011

В нашем офисе мы используем NHibernate уже 3 года.Мы думали о переходе на Fluent Nhibernate, но никогда не делали этого.Использовать файлы hbm.xml было проще всего отладить / изменить.Две общие проблемы этих XML-файлов заключаются в том, что все они проверяются во время создания фабрики сеансов и не являются рефактор-безопасными.

Из-за ошибки мне пришлось обновить более новую версию NHibernate (мы использовалиNHib 2.1.2GA), и когда я реализовал 3.2GA, нам также была предоставлена ​​возможность использовать многогранные отображения (отображение по коду).Я решил использовать Loquacious вместо Fluent, потому что у меня нет зависимости от другого проекта (Fluent) и тот факт, что NHibernate не будет поставляться, если отображение по коду нарушено.

Имейте в виду, что отображение Loquacious также не завершено.Пока я отображал все по коду, я обнаружил, что базовые вещи, такие как свойство-ref, не всегда были реализованы.Таким образом, даже при том, что это отправлено, это не на 100% завершено.И хотя это не будет шоком, у него есть ошибки.да.действительно.; -)

для получения дополнительной информации об (сообщенных) ошибках, проверьте базу данных ошибок NHibernate: https://nhibernate.jira.com/browse/NH

Надеюсь, это поможет.С уважением, Тед

5 голосов
/ 28 ноября 2011

thx to @TedOnTheNet. Я буду продолжать использовать и вносить вклад в FNH, потому что пройдет некоторое время, прежде чем кодирование по коду достигнет FNH в некоторых областях

  • Автоотображение
  • Свободный API намного лучше сообщает, какие есть возможности
  • гораздо более подробные отображения
  • .Database(SQLiteConfiguration.Standard.InMemory()) все еще легче понять, чем

    .DataBaseIntegration(db =>
    {
        db.ConnectionString = ???;
        db.Dialect<SQLiteDialect>();
        db.Driver<???>();
    });
    

и некоторые функции:

  • CompositeId и таблица для каждого подкласса
  • значения по умолчанию для устаревших столбцов
  • объекты недвижимости

Обновление: некоторые функции из hbm.xml (и FluentMapping) вообще не будут возможны с отображением по коду:

2 голосов
/ 24 ноября 2011

NH 3.2, насколько я могу судить, не имеет ничего, что отдаленно эквивалентно автоматическому сопоставлению FNH. (Для меня это было бы нарушителем).

Редактировать

FNH Automapper может работать с большинством общих шаблонов в объектной модели, таких как наследование, отношения «один ко многим», самоссылка и т. Д., Без какой-либо помощи со стороны программиста. Пока чистый NH не достиг такого уровня автоматизации.

Кроме того, Джеймс Грегори публично заявил, что он продолжит развивать FNH, по крайней мере, в ближайшем будущем. (Думаю, я видел это в группе Google FNH несколько месяцев назад, но я точно не знаю, где именно).

...