我有一个使用CORE RAZOR PAGES Web项目和两个.net标准2.0类库完成的项目。一种是基础结构类,而不是我的DbContext。
因此,我被告知我需要将.NET Framework Classic用于Web界面而不是核心。由于.NET Framework 4.7.2和.NET core 2.2对.NET标准2.0有效,所以我认为我可以拥有一个新的Web项目,但保留两个类库。
因此,我引用了两个类库,并使用控制台运行“ update-database”。 starup项目是.NET Framework MVC项目,而“ Default Project”是.NET标准2.0类库。但是我得到了错误
您的启动项目'Sr.RazorFrame'没有引用Microsoft.EntityFrameworkCore.Design。该软件包是实体框架核心工具运行所必需的。确保启动项目正确,安装软件包,然后重试。
所以这是说我的项目需要一个CORE Nuget程序包,但是由于它是.NET Framework,所以我不能这样做。我感到很困惑……那么是否有用于STANDARD的Microsoft.EntityFrameworkCore.Design?
答案 0 :(得分:2)
但是我不能这样做,因为它是.NET Framework。
实际上,您可以在Microsoft.EntityFrameworkCore.Design
项目中使用.NET Framework
。
那么有没有用于STANDARD的Microsoft.EntityFrameworkCore.Design?
如果查看Microsoft.EntityFrameworkCore.Design
程序包(v2.2.6
),您会发现有一个net461
版本和一个netstandard2.0
:
├───build
│ ├───net461
│ └───netcoreapp2.0
├───lib
│ ├───net461
│ └───netstandard2.0
├───package
│ └───services
│ └───metadata
│ └───core-properties
└───_rels
因此,最好在经典的ASP.NET MVC
WebApp中使用它。
要在.NET Framework项目中运行ef-core
工具,请确保已添加以下软件包:
Microsoft.EntityFrameworkCore.Design
包Microsoft.EntityFrameworkCore.Tools
软件包。 如果您使用的是SqlServer
,请随时安装Microsoft.EntityFrameworkCore.SqlServer
软件包。
最后,您可以在.NET Framework项目中运行Add-Migration
和Update-Database
:
PM> Add-Migration InitialCreate -Project Your.Standard.Lib.That.Contains.DbContext
To undo this action, use Remove-Migration.
PM> Update-Database -Project Your.Standard.Lib.That.Contains.DbContext
Applying migration '20190905015739_InitialCreate'.
Done.
PM>
尽管这种方法可行,但我怀疑它是否值得。因为您甚至可以在纯ef-core
库中运行.NET Standard2.0
迁移,所以:
netcoreapp2.1
。参见Tseng's answer Microsoft.EntityFrameworkCore.Design
的引用。如果您尚未安装ef-core工具,请同时安装Microsoft.EntityFrameworkCore.Tools