簡體   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