首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架核心-未找到设计时服务

实体框架核心-未找到设计时服务
EN

Stack Overflow用户
提问于 2020-11-04 15:56:19
回答 1查看 3.2K关注 0票数 8

我有一个非常基本的迁移文件。我在Package Manager控制台窗口中执行dotnet ef database update --verbose,但SQL Server中没有生成任何内容。

Package Manager控制台窗口中的最后几行输出如下所示:

代码语言:javascript
复制
Finding design-time services for provider Microsoft.EntityFrameworkCore.SqlServer...
Using design-time services from provider Microsoft.EntityFrameworkCore.SqlServer.
Finding design-time services referenced by assembly BM.Server.
No referenced design-time services were found.
Finding IDesignTimeServices implementations in assembly BM.Server...
No design-time services were found.
Done.

下面是我的代码以及添加和删除迁移的工作。它只是试图更新数据库,我遇到了这个问题。

代码语言:javascript
复制
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<BMDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("BMDbConnectionString")));
    }
}

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

我还为该项目安装了以下nuget包,两个dll都在我的Microsoft.EntityFrameworkCore.Design目录中:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-05 09:13:47

正如在this article中所引用的,您应该添加设计时DbContext。将以下类添加到项目中:

代码语言:javascript
复制
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;

namespace WebApplication8
{
    public class DesignTimeBMDbContext : IDesignTimeDbContextFactory<BMDbContext>
    {
        public BMDbContext CreateDbContext(string[] args)
        {
            var optionsBuilder = new DbContextOptionsBuilder<BMDbContext>();
            // pass your design time connection string here
            optionsBuilder.UseSqlServer("<connection_string>");
            return new BMDbContext(optionsBuilder.Options);
        }
    }
}

添加这个类之后,EF CLI将使用它来创建和更新设计时数据库

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64676058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档