Получение IdentityFramework, IDesignTimeDbContextFactory, .NetCore 2.1 и DbContext для хорошей игры вместе - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть существующий базовый проект .Net, в котором DBContext разбит на свою собственную библиотеку.В этом проекте я использую IDesignTimeDbContextFactory для создания DbContext для библиотеки классов.Это позволяет мне использовать такие команды, как add -igration и update-database, несмотря на то, что нет фактического файла appsettings.json или app.config для извлечения строки подключения.

Проблема, с которой я столкнулся сейчас, заключается в том, чтоЯ хотел бы сделать то же самое, только на этот раз добавить в IdentityFramework.Из того, что я могу читать онлайн, похоже, что стандартный способ сделать это - отказаться от старого DbContext и заставить все наследовать от IdentityDbContext.Кажется, это нормально до тех пор, пока я не попытаюсь добавить IDesignTimeDbContextFactory.IDesignTimeDbContextFactory ожидает DBContext и не может использовать IdentityDbContext.

Как получить библиотеку классов, которая поддерживает IdentityFramework и IDesignTimeDbContextFactory?У кого-нибудь есть пример?

Моя структура проекта: .Web .Api .Models (содержит модели идентификации)

public class AppUser : IdentityUser
{
    public string MyExtraProperty { get; set; }
}


public class AppRole : IdentityRole
{
    public AppRole() : base() { }
    public AppRole(string name) : base(name) { }
}

.Service (содержит DbContext и Identity Framework)

ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext<AppUser>
{
     public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false)
     {
     }

     public static ApplicationDbContext Create()
     {
            return new ApplicationDbContext();
     }
 }

DBContextFactory (Не нравится ApplicationDbContext)

public class DBContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
    public ApplicationDbContext CreateDbContext(string[] args)
    {
        var builder = new DbContextOptionsBuilder<ApplicationDbContext>();
        builder.UseSqlServer(
            @"Server=(localdb)\MSSQLLocalDB;Database=IdentityFrameWork;AttachDBFilename=IdentityFramework.mdf;Trusted_Connection=True;MultipleActiveResultSets=true;");

    }
}

Мне нуженрабочий пример .Net Core и Identity Framework в отдельном классе .Net Standard.Кто-нибудь может мне помочь?

Git Hub Link

1 Ответ

0 голосов
/ 26 сентября 2018

Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext наследуется от Microsoft.EntityFrameworkCore.DbContext, как вы можете видеть здесь , что заставляет меня задаться вопросом, возможно, вы используете предыдущую версию Identity Framework и AspNet.Identity.EntityFramework6.IdentityDbContext?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...