2010-01-08 3 views
4

Есть ли какой-либо C# .NET ORM, который может создавать базы данных?
Он должен быть способен создавать базы данных MS + MySQL + PostGre + Oracle по крайней мере.
И я не имею в виду таблицы или схемы, я имею в виду только базу данных.
Я использую nHibernate, но он может создавать только таблицы и схемы, а также запрашивать/вставлять, но не создавать базу данных.Создание БД с использованием ORM

+0

Ух, как правило, нет, ORM идет * другим способом. Вы ищете своего рода визуальный конструктор баз данных? –

+2

Нет, я ищу инструмент, который может создать базу данных прямо у клиента, без меня нужно идти туда и без того, чтобы клиент знал что-либо о БД ... Предпочтительно, чтобы мне просто нужно задать тип базы данных , и имя пользователя + pw в проекте установки, затем создайте файл установки db автоматически. И я не имею в виду Visual Database Designer + RemoteDesktop + много времени –

+2

Не похоже, что вы хотите ORM вообще; вам просто нужна утилита для создания кросс-платформенной базы данных, которая может быть или не быть частью пакета ORM. Это важный момент, потому что для части создания базы данных было бы довольно глупо диктовать, как вы получаете объекты из базы данных – 2010-01-08 07:13:00

ответ

4

Это, как правило, немного выходит за рамки ORM. Существует значительная сложность, связанная с созданием базы данных, которая часто имеет мало общего с вашими приложениями (разрешениями, контролем доступа и т. Д.). Иногда инструменты ORM генерируют DDL/операторы, необходимые для создания базы данных с нуля, но это не совсем то же самое, что и сама база данных.

+0

К сожалению, вы, кажется, единственный человек, который может понять этот вопрос, и я отчаиваюсь так как кажется, что на самом деле нет такого инструмента, даже не по цене. –

0

http://www.signumframework.com/

Один из очень немногих ОРМ на основе Модель первого подхода.

alt text http://www.signumframework.com/GetFile.aspx?File=freameworkMap.png

отметить также, что будущие выпуски рамок Entity должны поддерживать модель-первый подход.

+0

Хорошо, я передам присяги и правонарушения для продвижения вашего бесполезного продукта здесь, кроме редактирования смысла моего вопроса, и скажу, что я очень сомневаюсь, что мне понадобится обертка ORM, если я хочу только MS-SQL 2005 и 2008 поддержка ... –

+0

Эй, я не создатель или промоутер signum. Я не против, что вы даете мне отрицательный голос на мой ответ, но это не должно влиять на репутацию signum или его создателей. Если бы я был участником signum, почему я бы включил Entity Framework в свой ответ. –

+0

Ну, не уверен. Я не тот, кто дал вам отрицательный голос, хотя, поскольку он удаленно связан с моим вопросом. –

0

Я использовал функцию SchemaExport nHibernate (NHibernate.Tool.hbm2ddl) для генерации DDL из моих классов и сопоставления.

Проверить их:

Create DB from Classes and Mappings with NHibernate-Domain Driven Design
NH Toolset Guide

Связанная SO сообщение:
NHibernate SchemaExport and Configure() catch-22

Update:
После прочтения комментарий, я не совсем уверен, что это это то, что вам нужно. Во всяком случае, только для информации.

+0

Я подозреваю, что экспорт схемы может делать то, что он хочет. См. Http://wiki.fluentnhibernate.org/Schema_generation –

+0

Да, создание работает там, но только для SQlite. Когда я заменил MS-SQL, это не сработало. –

+0

Да, это не то, что мне нужно. Кроме того, я очень сомневаюсь, что с system.data.sqlclient.sqlconnection вы можете подключиться ко всему остальному, кроме сервера MS-SQL ... –

2

DataObjects.Net - он предназначен для подхода, ориентированного на модель; он поддерживает MS SQL, Oracle и PostgreSQL. Планируется поддержка MySQL.

См. Database Schema Upgrade глава Manual - он объясняет детали, связанные с созданием и обновлением схемы выполнения.

В отличие от системы Signum (которая фактически очень близка к поддерживаемому подходу) DataObjects.Net практически не имеет ограничений, связанных с отображением. Например. вы можете использовать составные первичные \ внешние ключи. Его еще одним преимуществом является perfect LINQ support.

P.S. Я один из его авторов.

+0

Я просто заметил, что вы хотите, чтобы и сама база данных была создана. DataObjects.Net в настоящее время не способен на это, но я сразу нашел этот запрос функции в нашем трекере проблем: http://code.google.com/p/dataobjectsdotnet/issues/detail?id=509 - настолько вероятно, что это будет сделано когда-нибудь. –

+0

Btw, создание базы данных на самом деле немного сложно - вот почему люди избегают этого. Например. необходимо указать, где (где хранятся и т. д.) размещать файлы базы данных, устанавливать такие параметры, как сортировка и кодирование по умолчанию и т. д. - большинство из этих параметров относятся к конкретной РСУБД, поэтому поставщики не могут решить эту проблему единым способом , Обычно приложение использует только одну (выбранную) РСУБД, и для нее легко реализовать создание базы данных без участия ORM - это еще одна причина, по которой поставщики избегают этого. –

+0

Итак, если вы выбираете ORM, я рекомендую вам уделять больше внимания другим функциям. Эта проблема (создание базы данных) на самом деле требует всего около дня, чтобы решить ее самостоятельно. Но другие функции ORM будут использоваться в течение многих недель ... –

Смежные вопросы