2017-09-24 61 views
1



我和我的.Net核2.0应用程序的工作 - 我已经成功地将其分割成几个项目,但...
我有问题:如何从另一个程序集中使用DbContext - .net标准2.0库。

里面我ConfigureServices:EF核心的DbContext在.NET 2.0的标准库

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

为什么不能实现'IDesignTimeDbContextFactory'?你只需要像在'ConfigureServices'方法中一样调用'UseSqlServer()'命令.. –

+0

然后我需要将我的appconfig的一部分移动到包含我的上下文的程序集。 –

回答

1

事实证明,您必须执行IDesignTimeDbContextFactory,或者您必须更新配置应用程序的方式(使用.net core 2.0的新约定),将大部分配置从Startup类移动到Program类,您可以在其中建立IWebHost,因为:

的.Net 2.0的核心,同时创造迁移实际上启动应用程序
- 然后查找IDesignTimeDbContextFactory,如果它不能找到
- 它搜索IWebHost配置
然后它使用其中一个做一些核心魔术脚手架和迁移。