Плохая идея изменить автоматически сгенерированную базу данных asp.net mvc framework?

Это плохая идея (и если почему?) Добавить столбец к автоматически сгенерированному asp.net (ASPNETDB.MDF, visual studio 2008, mvc framework) "роли пользователей - база данных"?

(Например, я хочу добавить столбцы RealName и LastName в таблицу aspnet_Users в базе данных.)

Причина, по которой я хочу добавить столбец вместо создания всей новой таблицы, состоит в том, чтобы избежать проблемы с обслуживанием двойника и ненужной избыточностью

4 ответа

Решение

Используются две схемы генерации (от Pragmatic Programmer):

  • Те, которые используются один раз для генерации кода
  • Те, которые используются постоянно для синхронизации кода

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

В случае сгенерированной вами базы данных asp.net у вас нет причин перезапускать генерацию, так что было бы нормально отредактировать ее.

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

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

Я слышал, что это довольно хорошее решение: http://www.asp.net/downloads/sandbox/table-profile-provider-samples/

Почему вы не создаете новую таблицу с ограничением Foriegn Key? Кажется плохой идеей добавить столбец в aspnetdb... это будет кошмар, если вам когда-нибудь понадобится воссоздать вашу базу данных...

Во-первых, эти таблицы на самом деле не являются чем-то конкретным для MVC: они создаются / для AspNetSqlMembershipProvider по умолчанию. (Также относится к другим видам приложений ASP.NET.)

Возможно, вы могли бы безопасно добавить новые столбцы, но поставщик членства не будет "видеть" их. Он предоставляет механизм своего профиля для хранения дополнительной информации (которая сериализуется и сохраняется в таблице aspnet_Profiles).

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

Другие вопросы по тегам