.net 标准 2.0 库中的 EF Core DbContext

EF Core DbContext in .net standard 2.0 library



我正在使用我的 .Net Core 2.0 应用程序 - 我已经设法将它分成几个项目但是......
我有以下问题:如何从另一个程序集 - .net 标准 2.0 库中使用 DbContext。

在我的配置服务中:

services.AddDbContextPool<MyContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MsSql"), sqlOption => sqlOption.MigrationsAssembly("NetStandardAssemblyName")));


我收到了这条错误信息:
无法创建 'GamgooContext' 类型的对象。将 'IDesignTimeDbContextFactory' 的实现添加到项目中,或查看 https://go.microsoft.com/fwlink/?linkid=851728 了解设计时支持的其他模式。

我在这里找到了一些解决方案:
https://codingblast.com/entityframework-core-idesigntimedbcontextfactory/
- 但它对我不起作用。我不想从我的 .net 核心应用程序复制配置和连接字符串。

我试图向包含上下文的项目添加多个目标框架,就像互联网上其他一些解决方案所建议的那样,但它每次都会让我的 Visual Studio 崩溃。

事实证明,您必须实施 IDesignTimeDbContextFactory 或更新您配置应用程序的方式(使用 .net core 2.0 的新约定),方法是将大部分配置从 Startup class 到程序 class,您可以在其中构建 IWebHost,因为:

.Net Core 2.0 在创建迁移时实际上启动了您的应用程序
- 然后搜索 IDesignTimeDbContextFactory 如果找不到
- 它搜索 IWebHost 配置
然后它使用其中之一来执行一些 ef 核心魔术脚手架和迁移。