2008-08-26 3 views
4

Я знаю, что существует несколько (автоматических) способов создания уровня доступа к данным для управления существующей базой данных (LINQ to SQL, Hibernate и т. Д.). Но я получаю вид устал (и я считаю, что должен быть лучший способ делать вещи) вещи, как:Создание таблиц базы данных из определений объектов

  1. Создание/изменение таблицы в Visio
  2. Использование «Database Update» Visio для создания/изменить базу данных
  3. Импорт таблиц в "LINQ к классам SQL" объект
  4. Изменение кода соответственно
  5. Compiling

W о способе создания схемы базы данных из определения объектов/объектов? Я не могу найти хорошие ссылки для таких инструментов (и я ожидал бы некоторую встроенную поддержку, по крайней мере, в некоторых рамках).

Было бы идеально, если бы я мог просто:

  1. Изменение определения объекта
  2. Изменить код, который управляет объектом
  3. Compile (изменения базы данных выполняются автоматически волшебно)

ответ

1

Я считаю, что это проблема, которую пытается решить адрес Microsofy Entity Framework. Хотя он специально не разработан для «Компиляции (изменения базы данных выполняются автоматически),« он решает проблему обработки изменений в модели домена без огромной зависимости от базовой модели данных.

0

Некоторые из действительно крупных собак, такие как ERwin Data Modeler, будут проходить объект к БД. Однако вам нужно иметь большие деньги, чтобы позволить себе продукт.

1

Как предложил Джейсон, объект db может быть хорошим выбором. Взгляните на db4objects.

+0

Это очень хороший продукт. Почти хорошо, чтобы быть правдой ... все еще ждут улова. – 2009-06-23 03:21:51

+0

Уловка заключается в том, что это база данных объектов и поэтому не основана на превосходной реляционной модели. – 2009-11-16 01:34:57

1

То, что вы описали, является GORM. Он является частью структуры Grails и построен для работы с Hibernate (возможно, JPA в будущем). Когда я впервые использовал Grails, это казалось обратным. Мне было более комфортно работать с Rails-процессом для создания таблиц и позволять структуре генерировать леса из схемы базы данных. GORM сохраняет ваши объекты домена для вас, поэтому вы создаете и изменяете объекты, управляете созданием/обновлением базы данных. Теперь это имеет больше смысла, когда я привык к этому. Извините, что дразните вас, если вы не ищете новую структуру, но она находится на roadmap для версии 1.1, чтобы сделать GORM доступной автономной.

0

Я продолжал копаться вокруг некоторых «основных» фреймворков, и кажется, что Django делает именно то, о чем я говорил. Или так кажется из этого screencast.

У кого-нибудь есть замечания, чтобы сделать об этом? Это хорошо работает?

1

Когда мы построили первую версию нашего собственного фреймворка (Inon Datamanager), я прочитал его ранее существовавшие таблицы SQL и вывел из них самогенерируемые объекты Java.

Когда мои коллеги, пришедшие с фона Smalltalkish, построили вторую версию, они начали с объектов, а затем автогенерировали таблицы.

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

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

Но дело в том, что это зависит от того, культурно ли вы человек объекта или человек базы данных - вы можете рассматривать любой из них как авторитетный источник.

0

Да, Django хорошо работает.

да, он будет генерировать свои таблицы SQL из ваших определений модели данных (написанные на Python)

Это не всегда изменяющие существующие таблицы, если вы обновляете вашу структуру, вы, возможно, придется запустить таблицу ALTER вручную

Рубин на Rails имеет еще более продвинутой версии этих функций (Rails миграций), но я не люблю рамки как много, я считаю, рубин и рельсов довольно своеобразных

4

Заканчивать DataObjects.Net - это предназначено для поддержка именно этого случая. Только код, и ничего больше. Его schema upgrade layer, вероятно, самый признанный, который вы можете найти, и он действительно полностью абстрагирует SQL-обновление схемы SQL.

Отъезд product video - вы заметите, что ничего не сделано для синхронизации схемы. Пример обновления схемы показывает предполагаемое использование этой функции.

0

Вид позднего ответа, но здесь идет:

Я столкнулся с точно такой же проблемой и в конечном итоге писать свое собственное решение для этого, работая с .NET и SQL Server только однако. Он basicaly действительно осуществляет процесс, который вы описали: объекты

  • Всех DB хранятся погруженные CREATE скриптов как часть исходного кода
  • DB Объекты устанавливаются автоматически (или по запросу) при использовании функции доступа к данным
  • Все изменения без таблицы также выполняются автоматически (или по запросу) в одно и то же время
  • Изменения таблицы, которые могут потребовать особого внимания для переноса данных, выполняются с помощью (вручную созданных) сценариев изменения также при обновлении базы данных
  • Даже ручные изменения, сделанные для любого объекта базы данных, могут быть обнаружены, так что целостность схемы может быть проверена и исправлена.
  • Необязательный легкий ORM может отображать хранимые процедуры и объекты, а также результирующие наборы (даже несколько)
  • Командная строка, лайн помогает поддерживать исходные файлы SQL в синхронизации с базой данных разработки

Библиотека, включая базу данных, предоставляется бесплатно по лицензии LGPL.

http://code.google.com/p/bsn-modulestore/

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