Проект базы данных Visual Studio и aspnet_regsql.exe

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

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

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

1 ответ

Да, я сделал это Исследуя его, я видел ряд мест, где они не рекомендуют его, например, 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
Другие вопросы по тегам