Может ли схема базы данных SQL Server генерироваться из классов .NET - PullRequest
1 голос
/ 29 января 2011

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

Но было бы хорошо, если бы был какой-то простой способ сделать это.

Ответы [ 3 ]

2 голосов
/ 29 января 2011

Конечно, немного подумав, вы можете сгенерировать некоторые грубые сценарии создания таблиц и даже хранимые процедуры для поддержки INSERTS / UPDATES / DELETES (если хотите).

Если не существует точного сопоставления «один к одному», вам нужно будет очистить эти сценарии вручную.

РЕДАКТИРОВАТЬ: уточнить это далее (в сочетании с ответом @ TomTom)

Вещи, которые будет трудно / невозможно вывести автоматически:

  • значения столбца по умолчанию
  • вычисляемые столбцы (если есть)
  • размеры Varchar
  • столбцы NULL / NOT NULL
  • индексы

Вещи, которые вы могли бы делать автоматически с кучей работы (но лучше сделать вручную, IMO):

  • назначение первичного ключа
  • отношения внешнего ключа
  • отношения
2 голосов
/ 29 января 2011

Это не так.Или только очень глупый способ.Без дополнительных аннотаций .NET содержит гораздо меньше информации, чем схема БД.Условия, проверки принимаются.Типы данных тоже отсутствуют.И как вы думаете, такой код будет выводить, какие индексы иметь?Черт возьми, даже выяснить первичный ключ класса / таблицы невозможно.

Наследование - это еще одна тема.

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

1 голос
/ 29 января 2011

Если вы используете VS2010, вы можете посмотреть на разработку Code-First с использованием Entity Framework, а ваши классы наследуются от DbContext. У ScottGu есть хорошая запись в блоге здесь о том, как это сделать.

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