簡體   English   中英

如何在Visual Studio 2015中管理EF 6遷移?

[英]How can I manage EF 6 migrations in visual studio 2015?

我使用Visual Studio 2013最新更新啟動了帶有EntityFramework -Version 6.1.2的新MVC項目。 我進行了幾次遷移並更新了數據庫。 之后,我在另一台計算機上簽出了該項目,並使用Visual Studio 2015 CTP 6打開了該項目。

如果我進入包管理器控制台並嘗試運行任何遷移命令,它們將無法識別:

add-migrations:術語“ add-migrations”不被視為cmdlet,函數,腳本文件或可運行程序的名稱。 檢查名稱的拼寫,或者是否包含路徑,請驗證路徑是否正確,然后重試。

如何在Visual Studio 2015中使用Entity Framework 6管理遷移?

您是否嘗試過卸載並重新安裝EntityFramwork NuGet軟件包? 我遇到了與上述相同的問題,並且解決了該問題。

好的,所以我在VS2013中啟動並升級到VS2015 RC的EF6項目遇到了這個問題。 如果我在VS2013中打開了這些命令,但在VS2015中沒有打開。 我發現可以快速,輕松地解決問題的方法是使用reinstall package命令:

Update-Package –reinstall EntityFramework

這修復了所有命令丟失的錯誤,然后允許我啟動數據庫更新並在VS2015中創建新的遷移。

我已經做了一些檢查,但我將回顧一下所有ef場景:

asp.net 5項目中的ef7 :遷移管理已更改,現在可以使用ef migration命令進行處理。
傳統.net應用程序中的ef7 :這是必需的框架4.5.1,但是在此頁面上您可以在.net應用程序中使用ef 7,找到有關如何在傳統應用程序中使用ef 7的很好的指南。 添加EntityFramework.Commands包很重要。
ef6 :不適用於asp.net 5 ,因此即使您可以安裝它,構建也會被破壞。 大多數實際ef驅動程序的情況與mongodb和Postgresql的情況相同。 如果您不確定是否與ef 7兼容,請不要安裝它。 目前,我認為您可以僅依靠sqlserver和inMemory。
對於asp.net 4應用程序,命令的實際安裝是實體框架包本身的一部分,因此將在該包的第一次安裝時安裝(如上正確指出的那樣)。
在某些情況下,在尚未安裝ef軟件包的環境中,復制asp.net 4項目並開始對其進行處理可能會出現此問題,無論出於何種原因安裝了軟件包,魔術地消失了。

我遇到類似的問題,因為我也無法從Package Manager控制台運行“ Add-Migration ”(盡管我遇到了另一個錯誤。)不幸的是,重新安裝EntityFramework不適用於我,可能是因為我有ASP.Net 5項目在相同的解決方案中。 (這不適用於傳統的csproj ,因為它需要resx,據我所知,不支持。)

我最終創建了一個控制台應用程序,引用了包含我的遷移的項目,並添加了以下內容:

    var configuration = GetConfiguration();

    var scaffolder = new MigrationScaffolder(configuration);

    scaffolder.Namespace = configuration.MigrationsNamespace;

    var scaffoldedMigration = scaffolder.Scaffold(name);

    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".cs", scaffoldedMigration.UserCode);
    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".Designer.cs", scaffoldedMigration.DesignerCode);
    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".resx", BuildResx(scaffoldedMigration.Resources));

GetConfiguration返回*.Migration.Configuration類的實例。 name是您的遷移的新名稱。 默認情況下,此代碼將其放入控制台應用程序的Debug文件夾中。 從那里拖放到Migration文件夾中的Visual Studio中,它應該可以解決問題。

后來我發現這與https://stackoverflow.com/a/20382226/195653基本相同,但是出於完全不同的原因。

我完成了重新安裝或卸載,安裝EntityFramework以及關閉和重新打開VS的所有組合。 唯一有效的方法是刪除我的解決方案文件夾中的文件夾軟件包,然后重建解決方案以強制所有軟件包下載。

Update-Package EntityFramework ...應該可以解決問題。

暫無
暫無

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

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