我有一个现有的.Net核心项目,在其中将DBContext分解为它自己的库。在这个项目中,我使用IDesignTimeDbContextFactory为类库创建DbContext。这使我可以使用诸如add-migration和update-database之类的命令,尽管实际上并没有实际的appsettings.json或app.config文件可用来从中提取连接字符串。
我现在遇到的问题是我想做同样的事情,只是这次添加了IdentityFramework。从我可以在线阅读的内容来看,执行此操作的标准方法是放弃简单的旧DbContext,并使所有内容都从IdentityDbContext继承。直到我尝试添加IDesignTimeDbContextFactory为止,这似乎都是可以的。 IDesignTimeDbContextFactory需要DBContext,并且不能使用IdentityDbContext。
我如何拥有一个支持IdentityFramework和IDesignTimeDbContextFactory的类库?有人举个例子吗?
我的项目结构为: 网页 .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 Standard类中的.Net Core和Identity框架的工作示例。有人可以帮我吗?
答案 0 :(得分:0)
Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext
继承自Microsoft.EntityFrameworkCore.DbContext
,就像您看到的here一样,这使我想知道您是否正在使用Identity Framework和AspNet.Identity.EntityFramework6.IdentityDbContext
的早期版本?>