簡體   English   中英

您的目標項目“XXX”沒有引用 EntityFramework。 這個包是必需的

[英]Your target project 'XXX' doesn't reference EntityFramework. This package is required

誰能指出我出錯的方向。 我正在嘗試使用 SQLite(控制台應用程序 .NET Core 3.1)在 EFCore 上進行遷移

運行任何命令,例如 enable-migrations 或 update-database 都會出現錯誤;

您的目標項目“XXX”沒有引用 EntityFramework。 這個包是為了讓 Entity Framework Core Tools 工作。 確保您的目標項目正確,安裝包,然后重試。

如果我使用 EFCore,需要 EntityFramework 似乎有點奇怪?

 <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>

就我而言,我遇到了同樣的異常,因為我安裝了 EntityFrameWork 包和 EntityFrameWorkCore。 我將后者用於執行 SqlCommand 的庫中的一些較舊的函數。

即使在我刪除了 EntityFramework 包之后,安裝這兩個包也完全清理了我的項目。 Michael Browns 的評論給了我一個提示,因為我最終不得不按照以下建議完全重置我的實體框架遷移: 重置實體框架

還有另一種方法可以做到這一點:

我們需要使用 DbContext 的工廠來在設計時創建遷移。

我們實現 IDesignTimeDbContextFactory 接口,因為按照慣例,當在 DbContext 同一個項目或啟動項目中發現實現該接口的類時,EFCore 會放棄其他創建 DbContext 的方式,將使用工廠。

見實現示例:

  public class MyDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
  {

    public MyDbContext CreateDbContext(string[] args)
    {
      var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();

      optionsBuilder.UseSqlServer("Your ConnectionString Here");

      return new MyDbContext(optionsBuilder.Options);
    }

實現后,將包含 DbContext 的項目設置為啟動和默認項目,並嘗試創建遷移:

//.Net Core CLI:
dotnet ef migrations Add Initial -p .\src\Data\Data.csproj -s .\src\Data\Data.csproj

//Package Manager Console
Add-Migration Initial -p .\src\Data\Data.csproj -s .\src\Data\Data.csproj

嗯,這是一個奇怪的解決方案,令我驚訝的是它奏效了!

只需從 VS 安裝程序更新 Visual Studio 並重新啟動它。 這將刪除所有不必要的包,重新安裝包將解決 EF 和 EF 核心包沖突。 然后運行您的遷移,您將看到錯誤將消失。

希望這可以幫助。

我在安裝了 EF Core 和 EF6 的項目中遇到了這個問題。

我在創建遷移時不斷收到消息:

Entity Framework 6 和 Entity Framework Core 都已安裝。 Entity Framework 6 工具正在運行。 對 Entity Framework Core 使用“EntityFrameworkCore\\Add-Migration”。

這是大型解決方案( .Net Framework.Net Core )的一部分,沒有辦法讓它只使用其中一個。

這特別發生在核心部分。

我嘗試過的,可能我會建議的是:

  1. 嘗試修復您的 Visual Studio 安裝。

  2. Visual Studio中正確設置“啟動項目”,在包管理器控制台中正確設置“默認項目”。

  3. 用於 EF6:

     EntityFramework\\Add-Migration <MIGRATIONNAME>

    對於 EF 核心:

     EntityFrameworkCore\\Add-Migration <MIGRATIONNAME>

這三件事的結合幫助了我。

正如其他人沒有弄清楚的那樣,但我確信同時擁有 EF6 和 EF Core 是罪魁禍首 我在這里記錄了我的旅程: https ://github.com/dotnet/efcore/issues/27051

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM