我正在使用我的.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。
答案 0 :(得分:1)
事实证明,您必须实现IDesignTimeDbContextFactory
,或者必须更新配置应用程序的方式(使用.net core 2.0的新约定),将大部分配置从Startup类移至Program类您可以在哪里构建IWebHost
,因为:
创建迁移时.Net Core 2.0实际上启动了您的应用程序
- 然后搜索IDesignTimeDbContextFactory
以及是否找不到
- 它搜索IWebHost
配置
然后它使用其中一个做一些ef核心魔术脚手架和迁移。