在我的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 "类型不能用作通用类型或方法 "DbContextOptions "中的类型参数 "TContext"。从'Appleby.Repo.ApplebyContext'到'Microsoft.EntityFrameworkCore.DbContext'没有隐式引用转换。
有谁能帮助我吗?是我漏掉了一个引用,还是我的设置不正确?
你必须安装 Microsoft.AspNetCore.Identity.EntityFrameworkcore
不 Asp.Identity.EntityFrameworkcore
.