【问题标题】:Error running update-database entityframeworkcore 2运行更新数据库 entityframeworkcore 2 时出错
【发布时间】:2018-10-10 08:28:53
【问题描述】:

我在包含 AspNet Core WebApi 的解决方案的类库中安装了 EntityFrameworkCore 2.0.2

我在项目中安装了以下包;

Microsoft.AspNetCore.Identity.EntityFrameworkCore - 2.0.2

Microsoft.EntityFrameworkCore - 2.0.2

Microsoft.EntityFrameworkCore.SqlServer - 2.0.2

Microsoft.Extensions.Identity.Stores - 2.0.2

System.Data.SqlClient - 4.4.3

我的类库项目调用上下文如下;

 public class MyContextFactory : IDesignTimeDbContextFactory<MyDataContext>
    {
        public MyContextFactory()
        {
        }

        public MyDataContext CreateDbContext(string[] args)
        {
            var builder = new DbContextOptionsBuilder<MyDataContext>();
            builder.UseSqlServer(DbGlobals.DevDatabase);

            return new MyDataContext(builder.Options);
        }
    }

当我尝试从包管理器控制台运行update-database 命令时,出现以下错误。

应用程序启动异常:System.IO.FileNotFoundException:可能 找不到文件 'C:\Users\matt\Source\Repos\project\Services.WebApi\bin\Debug\netcoreapp2.0\ef.xml'。

当我尝试add-migration 时也会出现这种情况。

我找不到关于 ef.xml 的任何详细信息以及它是如何生成的?谁能告诉我这里发生了什么。

如果我运行add-migration,我会生成迁移,但随后会出现错误;

在类“程序”上调用方法“BuildWebHost”时出错。在没有应用程序服务提供商的情况下继续。错误:找不到文件'C:\Users\matt\Source\Repos\project\Services.WebApi\bin\Debug\netcoreapp2.0\ef.xml'.

我已经尝试清理项目,重新编译(没有错误),我还查看了引用的文件夹,文件不存在。也没有(通过文件搜索)在其他地方生成?

现在迁移工作正常吗?

根据要求,我的BuildwebHost 是;

 public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();

我在我的 Startup.cs 中添加了 EF;

        services.AddDbContext<MyDataContext>(
            options => options
            .UseSqlServer(DbGlobals.DevDatabase));

【问题讨论】:

  • 这是一个 .net 核心应用程序吗?您是否有任何需要在 Main 中调用的 DB 初始化程序类?
  • 是的,对不起,我会更新问题。 EF 实际上是通过 Asp.Net Core Webapi 2 安装到类库中的。

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


【解决方案1】:

您使用的命令 update-databaseadd-migration 看起来不像受支持的 Entity Framework Core CLI 命令:

  • dotnet ef add migrations &lt;migration-name&gt;
  • dotnet ef database update

另请查看此 SO 问题以获取更多信息: Entity Framework Core 2.0 add-migration not generating anything

【讨论】:

  • 虽然我相信 docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell 我之前没有在任何其他核心项目上安装过工具包(我想值得一试),但 powershell 扩展应该可以工作。
  • 我试图重现您的错误,但它实际上与Package Manager ConsoleCore CLI 完美配合。你能从你的BuildWebHost方法和Startup添加代码吗?
  • 是的,没问题。你使用了update-database 命令还是dotnet ef database update?不感兴趣?它在工作时很奇怪,并且发生了一些变化导致了这种情况。 ef.xml 实际包含的任何想法?你项目生成这个吗?或者这是包裹的一部分?因为我已经更新了所有这些。
  • 太好了,你帮我找到了问题。我为我的 Webapi GUI 启用了 Swagger UI。我在它上面启用了 Xml cmets,它试图从调试文件夹加载 .xml 文件。现在因为从技术上讲它是运行的类库(虽然通过 webapi),因此它正在寻找 Ef.xml(我的类库是 services.ef)。
  • 长话短说我禁用了代码`var xmlFile = $"{Assembly.GetEntryAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath);` 在我的大摇大摆的一代中,更新数据库工作正常
猜你喜欢
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 2020-09-22
相关资源
最近更新 更多