С# Winforms, переход на NHibernate

В настоящее время мы разрабатываем новое приложение WinForms (С#.NET 3.5).

В настоящее время проект завершен на 40%, однако мы тратим значительное количество времени на выполнение реализации DAL (CRUD). Теперь мы хотим переместить NHibernate в качестве решения ORM, чтобы воспользоваться его многочисленными преимуществами и облегчить часть работы DAL-кодирования.

Мы бы скорее сосредоточились на решении бизнес-задач.

В настоящее время мы планируем перейти на NHibernate и FluentHibernate, но у вас есть несколько вопросов.

  • Является ли изменение NHibernate на крутую кривую обучения? С точки зрения производительности вы думаете, что NHibernate будет более разумным вариантом, чем продолжать писать наши собственные?

  • В настоящее время мы используем "мягкое удаление" и считываем данные через представления в базе данных, у которых есть поле "Deleted = null" (Deleted is TIMESTAMP). Насколько я понимаю, когда мы сопоставляем каждый класс, мы также можем указать предложение "Где", что означает, что нам больше не нужны какие-либо "фильтрующие" представления в нашей базе данных? Это правильно?

  • В связи с вопросом выше. У нас также есть функция "Очистить", которая может удалять записи из базы данных. Можем ли мы использовать "мягкое удаление" и все еще иметь функцию очистки?

  • Можем ли мы сохранить BLOBS в базе данных через NHibernate?

  • Какая стратегия лучшей миграции для нас? Как бы вы начали работу по миграции NHibernate, имея в виду, что приложение не было выпущено, и мы открыты для изменения структуры базы данных. В идеале я собираюсь сопоставить каждый из наших бизнес-объектов, а затем NHibernate генерирует схему для нас, это звучит как хороший способ пойти?

  • Может ли NHibernate работать с данными Lookup? В настоящее время мы считываем данные поиска в глобальный словарь, который мы используем в течение всего срока службы приложения. Можем ли мы сделать это с помощью NHibernate.

Извините, если некоторые из этих вопросов являются элементарными, я все еще пытаюсь получить дескриптор NHibernate.

1 ответ

(Ответы на ваш вопрос ниже, ссылка на исходный номер вопроса)

  • Переход на NHibernate абсолютно стоит кривой обучения - это было на моей нынешней работе, и мы никогда не оглядывались назад. NHibernate в действии - отличная книга для начала.

  • Вы можете легко включить предложение "Где" в качестве части вашей карты. Мы используем его для фильтрации некоторых распространенных таблиц и представлений в наших сопоставлениях NHibernate.

  • Для вашей функции очистки просто добавьте вторичную карту, которая отменяет предложение where (или одно без фильтра с фильтром), и вы являетесь золотым (мы иногда имеем несколько карт для тех же объектов для формирования данных).

  • RE Blobs и т.д. здесь статья о них ******, а другая - Calyptus.

  • Миграция, вероятно, является более крупным вопросом - лично мы используем шаблон репозитория с интерфейсом для репозитория (для модульного тестирования и mocks), конкретную реализацию репозитория и нашу модель (POCOs). Мы не храним никакого специального кода NHibernate вне нашего хранилища, чтобы уменьшить зависимости и т.д., А также помочь в тестировании. Опять же, посмотрите на NHibernate в действии, чтобы получить отличную информацию о продукте, а также NHForge.org, TekPub для своих серий NHibernate и т.д. (у меня даже есть некоторые уроки в моем блоге, связанные в моем профиле).

  • Для данных поиска NHibernate отлично работает, а также поддерживает кэширование.

licensed under cc by-sa 3.0 with attribution.