在Visual Studio 2017中将EF Core创建为单独的项目

时间:2018-04-01 14:08:04

标签: c# entity-framework asp.net-core

我正在尝试创建一个单独的EF Core 2作为单独的项目。

我创建了一个类库(.net核心),添加了两个引用:Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.Design

然后我遇到了一个错误:

  

未找到指定的框架“Microsoft.NETCore.App”,版本“2.0”

我通过在根文件夹中添加一个名为global.json的json文件来解决,其内容是:

{
   "sdk": {
      "version": "2.0.2"
   }
}

直到这里好。

如果我运行命令:dotnet ef update database,它会告诉:

  

没有为此DbContext配置数据库提供程序。

大多数人说我必须在Startup.cs注册。但我没有它,因为该项目是类库,没有mvc核心应用程序。

那么,在这种情况下要采取什么措施?

当然,我有一个单独的mvc核心项目,该项目参考了EF核心项目。我应该在Startup.cs文件中注册dbcontext吗?

1 个答案:

答案 0 :(得分:1)

假设自从我这样做以来最近几周没有任何变化:

创建课程DesignTimeDbContextFactory(将ApplicationDbContext替换为DbContext的名称:

public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
    public ApplicationDbContext CreateDbContext(string[] args)
    {
        var connectionString = "Server=(localdb)\\mssqllocaldb;Database=MyDbName;Trusted_Connection=True;MultipleActiveResultSets=true";

        var builder = new DbContextOptionsBuilder<ApplicationDbContext>();

        builder.UseSqlServer(connectionString);

        return new ApplicationDbContext(builder.Options);
    }
}

现在执行以下操作之一:

  • 如果使用Add-Migration和Update-Database命令行开关,请使用-project [project-name]标志

  • 如果在命令行中使用dotnet,请使用--project [project-name]标志

  • 或者您可以确保将此类库设置为启动项目,并在PM控制台中设置&#39;默认项目&#39;然后添加迁移并更新数据库