Почему добавление IdentityDbContext в DbContext дает мне ошибку? - PullRequest
1 голос
/ 19 марта 2020

В моем приложении ASP. NET Core 3.1 я начал использовать идентификацию для аутентификации. Я понял, что у меня есть два класса ApplebyContext (контекст моей базы данных) и ApplicationDbContext (наследует IdentityDbContext). Я не хочу разделять файлы для этого, и после некоторого поиска я обнаружил, что обычно просто объединить их вместе.

Имея это в виду, я пытался сделать это, но я получаю ошибки , У меня был мой код DBContext, который выглядел следующим образом:

using Appleby.Data;
using Microsoft.EntityFrameworkCore;

namespace Appleby.Repo
{
    public class ApplebyContext : DbContext
    {
        public ApplebyContext(DbContextOptions<ApplebyContext> options)
            : base(options)
        {
        }
        public DbSet<Products> Products { get; set; }
        public DbSet<Contact> Contacts { get; set; }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
        }
    }
}

У меня также был мой ApplicationDbContext (который я настроил в другом проекте во время реализации идентичности), который выглядит так:

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using WebApplication1.Models;

namespace WebApplication1.Data
{
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }
    }

}

Из того, что я увидел, все, что мне нужно сделать, это указать, что мой ApplebyContext унаследует IdentityDbContext, поэтому я объединил код следующим образом:

using Appleby.Data;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.EntityFrameworkCore;

namespace Appleby.Repo
{
    public class ApplebyContext : IdentityDbContext<ApplicationUser>
    {
        public ApplebyContext(DbContextOptions<ApplebyContext> options)
            : base(options)
        {
        }
        public DbSet<Products> Products { get; set; }
        public DbSet<Contact> Contacts { get; set; }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
        }
    }
}

Однако я получить сообщение об ошибке options в public ApplebyContext(DbContextOptions<ApplebyContext> options) : base(options) из:

Тип «Appleby.Repo.ApplebyContext» нельзя использовать в качестве параметра типа «TContext» в типе или методе generi c. DbContextOptions. Не существует неявного преобразования ссылок из «Appleby.Repo.ApplebyContext» в «Microsoft.EntityFrameworkCore.DbContext».

Кто-нибудь может помочь? Возможно, я пропустил ссылку или неправильно ее настроил?

1 Ответ

0 голосов
/ 27 апреля 2020

Вы должны установить Microsoft.AspNetCore.Identity.EntityFrameworkcore, а не Asp.Identity.EntityFrameworkcore.

...