【发布时间】: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