繁体   English   中英

引用生成EF Core dbcontext的.NET Standard 2.0项目的.NET Framework MVC项目。 为什么不起作用?

[英].NET Framework MVC project referencing a .NET Standard 2.0 project that generates a EF Core dbcontext. Why doesnt it work?

我有一个使用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?

但由于它是.NET Framework,所以我不能这样做。

实际上,您可以在.NET Framework项目中使用Microsoft.EntityFrameworkCore.Design

那么是否有用于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工具,请确保已添加以下软件包:

  1. Microsoft.EntityFrameworkCore.Design程序包
  2. Microsoft.EntityFrameworkCore.Tools程序包。

如果您使用的是SqlServer ,也可以随时安装Microsoft.EntityFrameworkCore.SqlServer软件包。

最后,您可以在.NET Framework项目中运行Add-MigrationUpdate-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>

尽管这种方法可行,但我怀疑它是否值得。 因为您甚至可以在纯.NET Standard2.0库中运行ef-core迁移,所以:

  1. 添加其他目标框架名称,例如netcoreapp2.1 曾的答案
  2. 不要忘记添加对Microsoft.EntityFrameworkCore.Design的引用。 如果尚未安装ef-core工具,请同时安装Microsoft.EntityFrameworkCore.Tools
  3. 添加具有无参数构造函数的DbContext,或创建一个DesignTime工厂。 有关更多详细信息,请参见官方文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM