【发布时间】:2018-09-25 21:11:45
【问题描述】:
我有一个现有的 .Net 核心项目,我将 DBContext 分解到它自己的库中。在这个项目中,我使用 IDesignTimeDbContextFactory 为类库创建 DbContext。这让我可以使用 add-migration 和 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 和身份框架)
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 Standard 类中的 .Net Core 和 Identity 框架的工作示例。谁能帮帮我?
【问题讨论】:
-
错误是什么?
-
错误是:'IdentityFramework.Service.ApplicationDbContext'类型必须可转换为'Microsoft.EntityFrameworkCore.DbContext'
标签: c# entity-framework .net-core