переписать приложение SQL / vb6 - я должен использовать nHibernate или Linq - PullRequest
0 голосов
/ 22 декабря 2009

У меня есть старое приложение VB6, которое я переписываю в .Net. Я не использовал пакет ORM ранее (будучи старомодным типом, который любит знать, какой SQL используется), но я видел хорошие отчеты о NNibernate, и я испытываю желание использовать его для этого проекта. Я просто хочу проверить, я не буду стрелять себе в ногу.

Поскольку мое новое приложение изначально будет работать вместе с существующим, любой ORM, который я использую, должен работать с существующей схемой базы данных. Также мне нужно использовать текстовый поиск SQL-сервера. Насколько я понимаю, LINQ to SQL не поддерживает текстовый поиск, поэтому это исключит его.

Приложение использует свой собственный метод распределения идентификаторов для новых объектов - позволит ли это NHibernate или оно ожидает использовать свои собственные механизмы?

Также я прочитал, что NHibernate делает кеширование. Мне нужно убедиться, что строки, вставленные вне NHibernate, сразу же доступны при доступе к базе данных из NHibernate и наоборот.

Есть 4 или 5 основных таблиц и 10 или около того вспомогательных таблиц. хотя пара основных таблиц содержит до миллиона строк, само приложение обычно возвращает только несколько строк. Пользовательская нагрузка низкая, поэтому я не ожидаю проблем с производительностью.

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

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

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

Ответы [ 3 ]

3 голосов
/ 22 декабря 2009

Несмотря на то, что ORM хороши, я лично не стал бы рисковать, пытаясь использовать какой-либо ORM в 20-дневном проекте, если бы мне пришлось освоить кривую обучения ORM, когда я шел.

Если у вас есть инфраструктура ADO.NET, с которой вам удобно и вы можете жить без функций ORM, это гораздо менее рискованный подход.

Вы должны в конечном итоге выучить ORM и Linq (не обязательно Linq To Sql), но это гораздо приятнее, когда нет немедленного временного давления.

Это больше похоже на проблему управления рисками, которая требует от вас принятия личного решения о том, насколько вы готовы увидеть провал проекта из-за использования новых (для вас) технологий.

0 голосов
/ 22 декабря 2009

Вы также можете проверить LLBL Gen Pro. Это очень зрелый ORM, который обрабатывает множество различных сценариев.

0 голосов
/ 22 декабря 2009

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

Я настоятельно рекомендую, особенно с учетом ваших временных масштабов, использовать Fluent NHibernate для своих отображений - время для изучения синтаксиса файла сопоставления XML может быть слишком большим. Тем не менее, вам нужно будет использовать файл сопоставления XML для ваших материалов полнотекстовой индексации (при условии, что вы это имели в виду), записывая их как именованные SQL-запросы. (Подробнее см. документация nhibernate.info .)

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

Возможно, вы также захотите взглянуть на Linq в NHibernate - мы сочли его полезным с точки зрения абстрагирования еще большего количества нашего доступа к базе данных за простой интерфейс. Но именно Fluent NHibernate даст вам самую большую и самую быструю победу с точки зрения «обмана» на кривой обучения NHibernate.

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