C# Microsoft.EntityFrameworkCore.Sqlite(2.0.0 peview1最终版)迁移未创建表

C# Microsoft.EntityFrameworkCore.Sqlite(2.0.0 peview1最终版)迁移未创建表,c#,entity-framework,asp.net-core,entity-framework-core,C#,Entity Framework,Asp.net Core,Entity Framework Core,我是实体框架新手,在DB中创建表时遇到问题 数据库创建得很好,但它不从实体创建表 以下是我的背景: public class MyContext : DbContext { public MyContext(DbContextOptions<MyContext> options) : base(options) { } public MyContext() { } public DbSet<User> Users { get;

我是实体框架新手,在DB中创建表时遇到问题

数据库创建得很好,但它不从实体创建表

以下是我的背景:

public class MyContext : DbContext
{
    public MyContext(DbContextOptions<MyContext> options) : base(options) { }

    public MyContext()
    {
    }

    public DbSet<User> Users { get; set; }

}
这是我在Startup.cs中的代码

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
        using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
        {
            var context = serviceScope.ServiceProvider.GetRequiredService<MyContext>();
            context.Database.Migrate();

        }
}

public void ConfigureServices(IServiceCollection services)
{
   services.AddIdentityServiceAuthentication();

   services.AddDbContext<MyContext>(options => options.UseSqlite(Configuration.GetConnectionString("SqlLiteConnection")));

   services.AddMvc();
 }
public void配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
使用(var serviceScope=app.ApplicationServices.GetService().CreateScope())
{
var context=serviceScope.ServiceProvider.GetRequiredService();
Migrate();
}
}
public void配置服务(IServiceCollection服务)
{
services.AddIdentityServiceAuthentication();
services.AddDbContext(options=>options.UseSqlite(Configuration.GetConnectionString(“SqlLiteConnection”));
services.AddMvc();
}
迁移创建数据库
context.database.Migrate()从文档中我很清楚这一点,但我就是不知道如何从实体中创建表

谢谢你的帮助

而且不确定它是否重要,我的类
MyContext
是在类Libarry项目中定义的,而不是在web项目中定义的

编辑:

通过@borisdj answer,我发现我必须从Package manager运行以下命令:

添加迁移MyFirstMigration-Context MyContext-Project MyProject.Db

但我得到了这个错误:

尚未为此DbContext配置任何数据库提供程序。可以通过重写DbContext.OnConfigurang方法或在应用程序服务提供程序上使用AddDbContext来配置提供程序。如果使用AddDbContext,那么还要确保DbContext类型在其构造函数中接受DbContextOptions对象,并将其传递给DbContext的基本构造函数

正如您所看到的,我并没有覆盖
DbContext.onconfigurang
,而是在
Startup.cs
中使用
AddDbContext
,正如您在上面所看到的,它有一个接受
DbContextOptions
对象的构造函数,但我仍然得到这个错误


这可能是因为
MyContext
是在类库项目中定义的,而不是在Web项目中定义的(Startup.cs所在的位置)

您应该首先在Package Manager控制台中运行以下命令:
PM>添加迁移初始值
然后:
PM>更新数据库

如果应用程序中有多个DbContext-s,则需要指定DbContext名称:
PM>dd迁移初始-上下文MyContext-Project MyProject.Db

关于提供商的其他问题,您的应用程序中应包含以下元素: appsettings.json

"ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=CoreTemplate;Trusted_Connection=True;MultipleActiveResultSets=true"
Startup.cs

services.AddDbContext<MyContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
public partial class My Context : DbContext
{
    public CoreTemplateContext(DbContextOptions options) : base(options) { }

运行create migration Initial getting时出错:术语“create migration”未被识别为cmdlet的名称。。。。。我运行的是Microsoft.EntityFrameworkCore.Sqlite 2.0(预览版)和VS 2017My bad,它是“添加迁移”非常棒添加迁移初始帮助。只是我得到了一个错误,我有多个DbContext,所以我必须指定DbContex,就像添加迁移初始上下文MyContext一样。如果您有多个DbContext,请使用此附加解释更新您的答案,我将接受您的答案。感谢您的上下文位于类库中,您还需要指定启动项目
public partial class My Context : DbContext
{
    public CoreTemplateContext(DbContextOptions options) : base(options) { }