ASP NET CORE Не удается сформировать удостоверение личности с использованием существующего контекста DbContext - как указать параметры при формировании шаблонов?

Шаги по воссозданию:

1) создайте новый проект asp net core mvc.

2) создать новую модель и скаффолд контроллер API с чтением / записью

3) удалить bootstrap.css

4) измените созданный DbContext на наследование от IdentityDbContext

5) попытаться поднять идентичность

6) получить ошибку


Я создал набор объектов из объекта данных, который дал мне:

namespace WebApplication1.Models
{
    public class AllTheOtherStuffDbContext : DbContext
    {
        public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
        { }

        public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }

    }
} 

Теперь я пытаюсь сформировать набор идентификаторов для своей базы данных, но с использованием того же контекста, поэтому я меняю DbContext на IdentityDbContext<IdentityUser> в соответствии с некоторыми разными ответами, которые я нашел, но при создании шаблонов и генерации кода я получаю следующее сообщение:

Cannot use an existing DbContext with the '--useDefaultUI' option.

Я просмотрел UseDefaultUI ...

и в отдельном проекте, который я вижу, создавая основу для Identity, я добавляю эту строку в свой startup.cs:

services.AddDefaultIdentity<IdentityUser>() .AddDefaultUI(UIFramework.Bootstrap4) .AddEntityFrameworkStores<ApplicationDbContext>();

Я предполагаю, что проблема заключается в том, что я избавился от Bootstrap в моем текущем проекте (потому что я его ненавижу), поэтому я хочу ОСТАНОВИТЬ скаффолдинг, пытаясь добавить эту строку DefaultUI - как я могу это сделать при использовании Visual Studio? Могу ли я указать командную строку вместо использования параметра меню для добавления строительных лесов?


person jamheadart    schedule 13.08.2019    source источник
comment
Что вы имеете в виду под 5) попытаться поднять идентичность? Это не совсем понятно.   -  person Henk Holterman    schedule 13.08.2019
comment
IIRC, диалоговое окно scaffold блокируется, пока вы не выберете хотя бы 1 страницу для scaffold ... Если вы не хотите настраивать страницы, я думаю, вам не нужно ничего делать. Он работает (со страницами входа и регистрации) сейчас?   -  person Henk Holterman    schedule 13.08.2019
comment
Вы можете создать набор классов идентичности для автоматического создания логина / регистрации пользователя и т. Д. - щелкните правой кнопкой мыши по основному проекту, добавьте элемент с шаблоном, выберите «Идентификация»   -  person jamheadart    schedule 13.08.2019
comment
Хм, ну я выбрал overwrite all страницу - хотя в моем проекте их еще не было! и это сработало! Я попытаюсь воссоздать это снова позже и снова попробую эти шаги.   -  person jamheadart    schedule 13.08.2019


Ответы (2)


Итак, вы использовали IdentityDbContext<IdentityUser>

public class AllTheOtherStuffDbContext : IdentityDbContext<IdentityUser>
{
     ...
}

Вам нужно будет использовать этот DbContext здесь: .AddEntityFrameworkStores<AllTheOtherStuffDbContext>();

Чтобы остановить строительные леса пользовательского интерфейса, используйте services.AddIdentity<TUser, TRole>()

P.S. Мне тоже не нравится шаблон начальной загрузки.

person Anton Toshik    schedule 13.08.2019
comment
Да, спасибо, я добавил это services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<AllTheOtherStuffDbContext>();, и теперь он работает нормально, хотя, похоже, моя первоначальная проблема, предотвращающая любые строительные леса, заключалась просто в том, что я не выбирал какие-либо страницы для перезаписи в поле Добавить шаблон !! - person jamheadart; 13.08.2019

Создайте проект с идентификатором по умолчанию, а затем с идентификатором шаблона. Это должно работать нормально.

person Nayanajith    schedule 16.11.2020