Где ссылка API для nhibernate? - PullRequest
       18

Где ссылка API для nhibernate?

18 голосов
/ 27 апреля 2010

Возможно, я схожу с ума, но не могу найти справочный материал по API для nhibernate. Я нашел много руководств, учебных пособий, электронных книг и т. Д., Но нет ссылки на API. Я видел файл chm на странице nhibernate sourceforge, но, похоже, он не работает ни на одном из моих компьютеров (разных ОС)

Может кто-нибудь указать мне правильное направление?

Ответы [ 4 ]

8 голосов
/ 11 января 2011

Я только что нашел это:

http://web.archive.org/web/20141001063046/http://elliottjorgensen.com/nhibernate-api-ref/index.html

Кажется, он не официальный, но, по крайней мере, выглядит как ссылка на API ... в отличие от официальной ссылки, которая в основном описывает концепции и сопоставления без какой-либо информации о классах и членах.

1 голос
/ 31 марта 2016

Насколько я знаю, в Интернете нет общедоступных ссылок на классы. Вы можете построить его из источника. Клонируйте их , создайте решение NHibernate.sln, затем перейдите в папку doc, убедитесь, что у вас есть предпосылки, указанные в файле reference\readme.txt, и запустите nant doc. Это создаст ссылку на класс в папке build.

В противном случае наиболее часто используемый API не является широким, и большинство из них - XML, документированные с помощью intellisens, работающими в Visual Studio. Справочная документация имеет то преимущество, что дает больше контекста, возможно, помогает избежать ловушек, таких как уверенность, что ISession.Update следует использовать для обновления сущностей (это неправильно, вам это не нужно, если вы не используете отдельные сущности или сущности, приходящие из другого сеанса).

Официальная ссылка на документацию включена https://nhibernate.info.

Суб-ссылка:

  • Глобальный список документации
  • Ссылка (Что я чаще всего использую, особенно следующие подпункты.)
    • Конфигурация
    • Отображение - базовые / сущности . (Добавьте файл определения сопоставления xsd в любую папку или папку вашего решения, чтобы сообщить об этом VS и дать вам intellisens в ваших сопоставлениях hbm.)
    • Картирование - коллекции
    • Запросы - общие вопросы . Не пропустите функцию именованных запросов в Интерфейс IQuery .
    • API запросов:
      1. HQL . В основном я использую HQL с именованными запросами, в отображениях, для запросов, которые не создаются динамически. Они анализируются и проверяются при построении фабрики сеансов, что обычно происходит при запуске приложения, так что это почти так же хорошо, как проверка времени компиляции. Проверяет журналы log4net, чтобы получить подробные причины ошибок разбора именованных запросов.
      2. Критерии API . Я рассматриваю это как исторический способ динамического построения запросов в коде, который предпочтительнее создания строк HQL.
      3. API QueryOver . Основан на Criteia API, с поддержкой лямбда-выражений для проверки правильности именования запрашиваемых сущностей во время компиляции. На мой взгляд, предпочтительнее Criteria API.
      4. Linq API . Отлично подходит для динамически создаваемых запросов. Имейте в виду, что его реализация переводит ваши запросы в HQL. При сложных запросах он может генерировать неподдерживаемые конструкции HQL. Знание возможностей HQL позволяет лучше понять, как написать поддерживаемый запрос Linq для сложных случаев. (Например, для сложного порядка лучше использовать явный подзапрос linq в OrderBy, а не использовать коллекцию, сопоставленную с запрашиваемой сущностью.)
      5. Собственный SQL . Ну, само собой разумеется. Используется в качестве примера, когда вам нужна какая-то особая функция SQL, недоступная через другие API запросов (полнотекстовый SQL-сервер, выберите xml, ...), и вы не хотите расширять эти другие API. Вы также можете вызвать хранимые процедуры. При использовании собственного SQL я предпочитаю именованные запросы SQL.
    • Изменение данных , с Обновление объектов до Сброс и Обработка исключений .
    • Представления .
      1. Пакетная загрузка . Об этом вы можете прочитать мой пост здесь для подробного объяснения того, почему отложенная загрузка может быть очень эффективной с NHibernate, благодаря пакетной загрузке. Эта единственная функция всегда заставляет меня предпочитать NHibernate, а не Entity Framework, пока в EF не исчезнет его.
      2. Кэш второго уровня . Еще одна замечательная функция NHibernate, в которой отсутствует встроенная поддержка EF. Остерегайтесь, вы должны использовать транзакции для использования этого. Это позволяет NHibernate автоматически удалять кэшированные записи для вас при изменении данных в процессе приложения. Без транзакций NHibernate отключит кэш второго уровня, как только вы начнете изменять данные, чтобы избежать того, что кеш даст вам устаревшие данные.
    • перехватчики . Это один из многих способов настроить внутреннюю работу NHibernate. NHibernate очень сильно позволяет вам расширять его. Вы также можете добавить свои собственные расширения HQL как здесь , ваше собственное расширение linq2NH как здесь (все ответы от меня). И есть другие способы, см. Этот список для решений по расширению linq2NH.

Более того, ссылка на класс, скорее всего, будет рядом с Hibernate . Существует очень много внутренних API-интерфейсов, поддерживающих его реализацию, которые не очень удобны в использовании.

Почему такой API не скрыт (внутренний, закрытый, ...)? Не допускать их скрытия требуется для обеспечения широких возможностей NHibernate. Эти возможности должны быть на мой взгляд. Напротив, очень трудно исправить некоторые другие недостатки проекта .Net из-за недостатков расширяемости, от которых они страдают. (MVC FileResult и TweakDispositionAsInline, которые я должен был использовать вместо возможности переопределения какого-либо метода, или попробуйте расширить , см. .)

1 голос
/ 29 августа 2011

Если вы работаете в Windows, получите ILSpy и укажите его на NHibernate.dll. Это не совсем то же самое, что настоящая документация по API, но это не наполовину плохо.

0 голосов
/ 27 апреля 2010

есть хорошая книга, которая охватывает много, и есть html документация на сайте (которая также поставляется как книга)

(книга выйдет в свет - nHibernate в действии - немного устарела, но хорошее начало)

Вот ссылка на онлайн-справку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...