Идентификатор ASP.Net - использование пользовательской схемы

asp.net asp.net-identity entity-framework-6

Вопрос

Я сначала использую код MVC5 + Ef6 с ASP.Net Identity 1.0 и хочу, чтобы таблицы были созданы в пользовательской схеме. т.е. схемы, которая не является схемой dbo.

Я перевернул инженерную базу данных с помощью инструментов Ef power и установил имя схемы для всех других таблиц в классе сопоставления следующим образом

this.ToTable("tableName", "schemaName");

Я попытался сделать это для таблиц ASP.Net, но он все время давал мне много ошибок, и в итоге я сдался. Если я исключаю (обратные инженерные) таблицы ASP.Net Identity из моего проекта, они будут созданы, но всегда в схеме dbo

Кто-нибудь знает, как это сделать?

Принятый ответ

public class MyDbContext : EntityDbContext<ApplicationUser>
{
    public DbSet<ApplicationUser> Users { get; set; }

    public MyDbContext() : base()
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        // You can globally assign schema here
        modelBuilder.HasDefaultSchema("schemaName");
    }
}

Популярные ответы

Вот поздняя запись, объясняющая, что я сделал. Не уверен, есть ли лучший способ, но это ТОЛЬКО то, что сработало для меня.

Справедливости ради, у меня в моем контексте больше одной модели. Вот почему это было лучше для меня.

  1. Генерируйте таблицы в базе данных раньше времени (в то время как таблицы все еще находятся в «dbo»)
  2. Выполнение add-migration в проекте и создание миграции
  3. Измените все схемы в вашем коде перехода на желаемую схему
  4. Выполните update-database чтобы update-database эти изменения.
  5. Удалите исходный файл миграции (его хэш бесполезен для вас)
  6. Выполните повторную добавку и add-migration новую миграцию
  7. Обновите метод OnModelCreating вашей конфигурации с помощью кода ниже
  8. Запустите приложение и начните регистрировать пользователей

ЗАМЕТКА:
Вы НЕ хотите этого.

// This globally assigned a new schema for me (for ALL models)
modelBuilder.HasDefaultSchema("security");

КОНФИГУРАЦИЯ: OnModelCreating
Это назначало новую схему для ТОЛЬКО указанных таблиц

// This globally assigned a new schema for me (for ALL models)
modelBuilder.HasDefaultSchema("security");

НАЧАЛЬНАЯ МИГРАЦИЯ СМОТРЕТЬ КАК

// This globally assigned a new schema for me (for ALL models)
modelBuilder.HasDefaultSchema("security");



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему