Должен ли / можно ли создать схему базы данных из своих классов? - PullRequest
1 голос
/ 17 июля 2009

Я разработал некоторые классы с использованием диаграмм классов Visual Studio. Теперь я хотел бы сохранить эти данные, используя ORM и, возможно, другие механизмы персистентности. Мне интересно, есть ли способ генерировать SQL на основе свойств в моих классах, так как они довольно хорошо представляют необходимую структуру базы данных. Это избавило бы меня от большого количества ручного ввода SQL и послужило бы хорошим началом.

Я не начал с модели базы данных, потому что я хочу, чтобы мое постоянство было отделено от фактического "доменного слоя" (не уверен, что это правильное именование).

Затем преобразователь ORM (LLBLGen) может сгенерировать код на основе этой схемы, и мне останется только отобразить сгенерированные объекты на мой интерфейс персистентности.

Это хорошая идея, или я не на том пути?

Я нашел инструмент, который, кажется, выполняет эту работу (MindScape LightSpeed), но, к сожалению, он доступен только для VS2008.

Ответы [ 3 ]

4 голосов
/ 20 июля 2009

Существует много ORM, которые могут генерировать схему базы данных из классов модели домена. Более того, есть некоторые ORM, которые разработаны специально для такого пути развития. Это «Model First» или «Code First» концепция, и некоторые люди думают, что это будущее разработки приложений баз данных, поскольку LINQ теперь заменяет SQL. Например, следующая версия Entity Framework будет полностью поддерживать эту концепцию. Я могу рекомендовать попробовать DataObjects.Net , он автоматически генерирует и обновляет схему базы данных и поддерживает запросы LINQ.

1 голос
/ 17 июля 2009

Это плохая идея. Дизайн класса и дизайн базы данных не одно и то же.

Лично я делаю свой дизайн на концептуальном уровне с NORMA , бесплатной надстройкой Visual Studio. Он будет генерировать схему из концептуальной модели, а также может генерировать классы.

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

Из-за природы объектно-ролевого моделирования ограничения, которые вы накладываете на модель, могут использоваться для вывода как схемы базы данных, так и модели "класса".

1 голос
/ 17 июля 2009

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

...