NHibernate на DB прежней версии

Если вы включили заголовки Windows напрямую, замените:

#include 

на

#include "Windows/MinWindows.h"

https://answers.unrealengine.com/questions/811727 /

Обратите внимание, что если вам действительно нужно включить определенный заголовок Windows, и вам по какой-то причине нужно включить его напрямую, что вызывает эту проблему, убедитесь, что вы указали следующую директиву перед [ 115] директива включения:

#define WIN32_LEAN_AND_MEAN

https://answers.unrealengine.com/questions/813258/

7
задан Fabian Steeg 28 January 2009 в 17:13
поделиться

8 ответов

Это будет зависеть от того, как "NHibernate, дружественный" Ваша текущая база данных. NHibernate нравятся первичные ключи отдельного столбца (если их все называют "идентификатором" еще лучше). Большинство ORM не очень хранится proc товарищеская встреча насколько я знаю. Вы думали о том, как Вы собираетесь определить свои объекты передачи получить данные назад и вперед от дб?

BTW там - ничто для стыжений. ORM's является goot вещью, но Вы правы в попытке найти лучший подход.

2
ответ дан 7 December 2019 в 01:27
поделиться

Любой достойный инструмент ORM должен поддерживать постепенную интеграцию. Прием здесь должен иметь четкое разделение на уровне ДАО (Уровень Data Access Object). Если можно скрыть причуды доступа к данным посредством четко определенного API, не должно иметь значения при использовании ORM или нет.

Имея, который сказал, сложность введения ORM непосредственно связана со сложностью Ваших моделей таблицы. У Вас может быть много различных отображений для тех же таблиц, просто удостоверьтесь, что Вы делаете некоторые пробные версии заранее для знания причуд решения ORM как наличие объектного кэша, запишите - позади запросов, проксированного доступа и такого. Реальная выгода решения ORM использует объекты вместо фиктивных классов POJO. Это делает выполнение изменений в бизнес намного более легким, чем использование sprocs или плоские объекты.

Как примечание стороны, я работал над проектом, где мы переместили целое приложение в sprocs к Java. Хотя мы не использовали sproc, реальная боль была то, что sprocs архитектура не была четко определена, много sprocs, вызов другого sprocs сделал ее очень трудно для миграции просто некоторого sprocs за один раз.

1
ответ дан 7 December 2019 в 01:27
поделиться

Я лично не сделал этого, но Вы можете вставка копии хранимые процедуры в именованных запросах в Ваших файлах отображения, и удалять их один за другим позже.

Если у Вас нет опыта с ORMs, он мог бы, вероятно, трудно, чтобы начать изучать это в большом проекте прежней версии, потому что необходимо обнаружить все нестандартные функции ORM, который Вы не использовали бы в проектах нового строительства или использовали бы только один раз в год. NHibernate имеет много опций поддерживать унаследованные базы данных.

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

1
ответ дан 7 December 2019 в 01:27
поделиться

При использовании унаследованных баз данных Вы найдете инструменты ORM довольно трудными использовать, настроить, поддержать и оптимизировать. Мы столкнулись со многими проблемами, когда мы использовали NHibernate для отображения нашей Модели предметной области на существующую базу данных. Некоторые из них были:

  1. Объекты модели было трудно отобразить на существующие таблицы (у нас были по 100 таблицы), некоторые требования NHIBERNATE были довольно навязчивыми как каждая таблица, должен иметь поле ID, чтобы смочь быть отображенным в Объект области. Кроме того, отображение многих ко многим отношениям было довольно трудно схватить и использовать.

  2. Поддержание большого объема отображения XML, требуемого отображаться на унаследованную базу данных, стало работой на полную ставку для разработчика и было довольно сложно, особенно в команде 10 + разработчики.

  3. Наши запросы, ухудшенные в представлении в качестве сложности, выросли, так как Модель данных и Объектная модель не всегда соответствовали бизнесу и должны были постоянно настраиваться. Должен был быть написан большой код агрегирования объема данных. Например, если мы должны были показать сетку, которая присоединилась к нескольким таблицам, мы раньше загружались, несколько Объектов области соединяют их и показывают им в одной сетке. Тот код было трудно поддержать и отладить.

  4. Кроме того, иногда мы должны были выполнить анонимные запросы, т.е. где мы просто хотели несколько свойств от некоторых объектов а не целых объектов. Это было действительно трудно записать, поддержать и даже реализовать и шло вразрез с парадигмой ORM, но у нас не было выбора, кроме как сделать так.

  5. Другая проблема, с которой мы столкнулись, состояла в том, что База данных постоянно изменялась, поскольку DBAs осуществит рефакторинг таблицы, и это всегда повреждало бы наши Объекты области. Это было осуществление, чтобы сохранить Модели и Таблицы в синхронизации и также удостовериться, что Приложение все еще работало.

Длинная короткая история... Что мы узнали, что, если был способ отобразить SQL, в котором бизнес нуждался прямо к нашим Объектам модели UI или Объектам области, не имея необходимость волноваться о конфигурации, это будет лучшее решение.

После прохождения через этого опыта мы разработали Orasis Отображающийся Studio. Это - инструмент отображения, специально предназначенный для работы против унаследованных баз данных и также существующей Модели.NET / Объекты области. Это берет Ваши SQL-запросы и позволяет, Вы для отображения их на существующую.NET возражаете путем показа метаданных Запроса и Объекта графически и использования перетаскивания для создания отображений между столбцами Query и Свойствами объектов. Инструмент автоматически генерирует весь код ADO.NET, необходимо было бы выполнить отображение для чтения объектов. Можно затем использовать сгенерированный код в Слое DAL или использовать сгенерированный блок, чтобы получить и сохранить данные.

Можно попробовать его здесь: Orasis Отображающийся Studio. Это - инструмент, что мы полагаем, что разработчикам действительно нужно, особенно для работы с унаследованными базами данных и где производительность является ключевым требованием. Это записано разработчиками для разработчиков, таким образом, это обрабатывает некоторые сложные детали как наследование Obejct, вложенные объекты, преобразования типа данных, и т.д. Удачи!

3
ответ дан 7 December 2019 в 01:27
поделиться

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

Самая сложная задача с этим может заставлять Ваши структуры таблиц прежней версии вписываться в единственную таблицу NHIBERNATE на методологию класса. Существуют пути вокруг этого, но это может быть хитро. Однако, я думаю, что это стоит.

1
ответ дан 7 December 2019 в 01:27
поделиться

Вы упомянули, что переезжаете от своей текущей архитектуры, но обязаны, Вы придерживаетесь своего дизайна унаследованной базы данных (например, DBA строго ответственен за разработку и поддержание его), или Ваше текущее проектирование баз данных пересмотрено (с соображением для картопостроителя O/R) также?

Если трудно переехать от Вашего текущего дизайна прежней версии, Вы могли бы, вероятно, полагать, что изучение чего-то еще как iBATIS SqlMap к O/R отображает объекты на Вашу унаследованную базу данных с помощью простых запросов T-SQL, а не менее - гибкий Hibernate-style XML/attributes для отображения данных.

В зависимости от того, как Вы хотите приблизиться к дизайну, Вы могли использовать iBATIS SqlMap и NHibernate прозрачно бок о бок путем использования собственную абстрактную фабрику ДАО или iBATIS DataAccess API (который делает по существу, что, и все еще совместимо с NHibernate.)

1
ответ дан 7 December 2019 в 01:27
поделиться

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

Если Вы плохо знакомы с ORM, вероятно, лучше запустить совершенно новый проект с него, чем попытка преобразовать проект прежней версии.

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

1
ответ дан 7 December 2019 в 01:27
поделиться

Почему сохраненные procs "очевидно" плохо? Бизнес-логика в сохраненном причинении боли procs?

Microsoft, кажется, имеет много технологий персистентности в наличии (например, LINQ). Я не знаю, как оценить их по сравнению с NHibernate, но я не рекомендовал бы ORM, если у Вас нет действительно хороших объектов отобразиться на.

0
ответ дан 7 December 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: