Любые ORMs, которые работают с MS-Access (для прототипирования)?

Я на ранних стадиях проекта, и пока не ясно, нужна ли нам "реальная" база данных (т. е. SQL Server и др.). Поэтому я делал некоторые прототипы с использованием MS-Access, который до сих пор работает нормально. (разработка в C# / VS2008 / .Net 3.5 / MS-Access 2000).

однако несоответствие объектно-реляционного импеданса уже становится раздражающим и будет только ухудшаться по мере развития проекта.

Я не смог найти ORM, который будет работать с MS-Access. Есть предложения?

Edit-Следить За Мы в конечном итоге использовали Fluent NHibernate, главным образом потому, что он автоматизирует нашу объектную модель в реляционную базу данных, что было огромной победой для нас. Большинство образцов кода FNH, которые мы нашли, использовали SQLite, и это сработало так хорошо, что мы намерены использовать его для нашей производственной базы данных. (Приложение представляет собой настольный пакет сбора и анализа научных данных).

7 ответов


файлы MSAccess можно настроить в качестве источника ODBC на компьютерах Windows. Почти любой ORM позволит вам использовать ODBC. здесь это быстрый учебник о том, как настроить это, он изложен для Win2k, но процесс тот же для XP+. Вам также нужно иметь компоненты mdac установленный на вашей коробке.

NHibernate, похоже, имеет встроенную поддержку MSAccess, см. здесь. Но я никогда им не пользовался. Он также имеет драйвер ODBC.. Много другие также поддерживают ODBC.

и снова, как говорят другие.. MSAccess не масштабируется... период. Установка реального сервера баз данных довольно проста, поэтому я бы рекомендовал SQL Server Express, как и другие, или даже MySQL или Postgre, что проще настроить.

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


есть только один сценарий при выборе Access Database Engine является хорошим выбором: при создании автономного приложения доступа с использованием форм доступа (хотя выбор использования доступа в первую очередь является сомнительным выбором ;)

движок базы данных, который VS2008 играет лучше всего с SQL Server, и у вас не будет проблем с поиском ORM, который играет хорошо с SQL Server.


Не могу дать вам ответ на ваш вопрос, но вместо доступа вы можете рассмотреть один из следующих вариантов:

  • SQL Server Express: является бесплатным и совместим с полным SQL Server
  • SQL Server Compact: также бесплатно, не требует развертывания/установки, не поддерживает все функции (например, нет хранимых процедур).

на этом этапе, если вы не уверены, нужна ли вам" реальная " база данных или нет, я бы пропустил MS Access и пошел прямо в sql server express. Это бесплатно и по-прежнему позволяет делать все, что вам нужно.

плюс, если вы позже решите, что вам нужно масштабировать, то вы можете без боли.


Я рекомендую вам использовать что-то вроде Microsoft SQL Server или PostgreSQL для прототипирования. Если вы не хотите изучать конкретный синтаксис SQL и устанавливать специальные средства для разработки схемы базы данных, можно использовать ORM, который автоматически генерирует схему базы данных из объявления постоянных классов. Во всяком случае, этот подход очень эффективен для прототипирования.


LLBLGen работает с доступом


доступ-это плохая, плохая идея. Я считаю, что MS включает только доступ в Office, чтобы сохранить старых пользователей счастливыми.

даже если вы найдете ORM, который будет работать с базой данных Access, за несколькими исключениями вы блокируете себя в нишу инструмент, который, вероятно, не будет работать из коробки с реальным ядром базы данных. Если позже вы решите перейти на реальный компонент database engine, вам придется не только выполнить миграцию базы данных, но и перейти на другой ОЗР.

см. это сравнение между SQL Server Express и SQL Server Compact. В документе сравнения также упоминаются некоторые проблемы с другими хранилищами данных, включая доступ.

Если вы действительно обеспокоены возможностью установки SQL Server Express, рассмотрите SQL Server Compact:

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

  • Он менее мощный, чем Express (не поддерживает представления, триггеры, хранимые процедуры, которые я считаю требованием)

  • можно масштабировать до Express или других версий SQL Server очень легко

  • подходит для небольшой установки, таких как планшеты, мобильные устройства и т. д.

всегда имейте в виду масштабируемость при разработке любого приложения. Вы не хотите, чтобы вам пришлось писать компилятор PHP->C++, если/когда ваше приложение станет успешным только потому, что вы выбрали неправильный инструмент.

пока мы тут:

большая проблема с доступом (или, в данном случае, реактивный двигатель, который вы бы использовать при интеграции базы данных Access с .Net-приложение) является то, что нет "сервер", который обрабатывает запросы datase. Ядро, размещенное в приложении, должно читать и записывать непосредственно в файл на диске, содержащий базу данных. Всякий раз, когда это происходит, файл должен быть заблокирован, чтобы предотвратить одновременную запись. Грязные чтения становятся все более распространенными по мере роста числа пользователей, а также потенциального повреждения базы данных.

представьте, что каждый клиент на большом ресторан пытается одновременно войти на кухню, чтобы записать свои заказы или получить свою еду. Хаос приведет. Там будет много разбитой посуды, кухня будет в беспорядке, Вам повезет, если вы получите то, что заказали, в любом виде съедобного. С одним клиентом это, вероятно, работает нормально. С пятью, может быть. С 20,50,1000? Не столько.

Итак, ресторанная индустрия представила официантов и менеджеров, которые буферизуют IO на кухне. Приложение сервера баз данных делает что-то примерно аналогичное этому, ограничивая доступ к файлам на диске. Каждый получает то, что хочет, быстрее и надежнее, а хранилище данных защищено.