Проект базы данных Visual Studio и aspnet_regsql.exe - PullRequest
3 голосов
/ 21 января 2011

Я использую проект базы данных visual studio для управления изменениями в базе данных для веб-сайта.Я хотел бы использовать модель членства / ролей, созданную инструментом aspnet_regsql, для управления доступом к веб-сайту.

До сих пор я запускал aspnet_regsql перед развертыванием базы данных, поэтому проект базы данных объединяет таблицы, специфичные для веб-сайта, в базу данных.Я искал способ включить таблицы aspnet_ в проект базы данных, но не могу понять, как это сделать.

Кто-нибудь когда-нибудь пробовал это?Есть ли веские причины не делать это так?

1 Ответ

2 голосов
/ 25 февраля 2011

Да, я сделал это. Исследуя его, я видел ряд мест, где они не рекомендуют его, Pro ASP.Net 4.0 для одного. Смысл, я думаю, в том, что реализация скрипта может отличаться от одной версии фреймворка к другой. Это может быть хороший совет ... или это может быть слишком усердно.

Я сравнил и структуру, и данные, когда закончил использовать RedGate Compare, и я не могу найти ничего другого с результатом ... так что я думаю, что он работает хорошо ... YMMV.

Для этого я создал новую базу данных и запустил на ней aspnet_regsql. Затем я создал новый проект базы данных в VS2010 и импортировал эту базу данных. Затем я скопировал все файлы в каталог объектов Schema моих новых проектов и поместил их в существующий каталог объектов схемы Schema. Я открыл свой старый проект, показал все файлы из меню проекта, а затем включил все новые файлы в свой проект.

Вам также необходимо скопировать все разрешения базы данных из файла Database.sqlpermissions нового проекта.

Наконец, вам нужно добавить это в сценарий после развертывания.

-- Add 6 rows to [dbo].[aspnet_SchemaVersions]
IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'common') AND [CompatibleSchemaVersion] = N'1')
  BEGIN
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'common', N'1', 1)
  END

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'health monitoring') AND [CompatibleSchemaVersion] = N'1')
  BEGIN  
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'health monitoring', N'1', 1)
  END

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'membership') AND [CompatibleSchemaVersion] = N'1')
  BEGIN   
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'membership', N'1', 1)
  END

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'personalization') AND [CompatibleSchemaVersion] = N'1')
  BEGIN 
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'personalization', N'1', 1)
  END

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'profile') AND [CompatibleSchemaVersion] = N'1')
  BEGIN 
    INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'profile', N'1', 1)
  END

IF NOT EXISTS (SELECT * FROM [dbo].[aspnet_SchemaVersions] WHERE [Feature] = (N'role manager') AND [CompatibleSchemaVersion] = N'1')
  BEGIN 
   INSERT INTO [dbo].[aspnet_SchemaVersions] ([Feature], [CompatibleSchemaVersion], [IsCurrentVersion]) VALUES (N'role manager', N'1', 1)
  END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...