【问题标题】:EF Core DbContext in .net standard 2.0 library.net 标准 2.0 库中的 EF Core DbContext
【发布时间】:2017-09-24 20:24:17
【问题描述】:



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

在我的 ConfigureServices 中:

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?你只需要像在ConfigureServices 方法中一样调用UseSqlServer() 命令..
  • 然后我必须将我的 appconfig 的一部分移动到包含我的上下文的程序集中。

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


【解决方案1】:

事实证明,您必须要么实现IDesignTimeDbContextFactory,要么必须更新配置应用程序的方式(使用 .net core 2.0 的新约定),将大部分配置从 Startup 类移动到 Program 类可以构建IWebHost,因为:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-02
    • 2017-11-09
    • 2018-04-19
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多