'How to enable migrations in Visual Studio for Mac

I have Visual Studio for Mac and I'm trying to learn Xamarin with Azure using the following tutorial: https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter3/server/

At some point, I have to enable EF migrations. The tutorial says: Go to View -> Other Windows -> Package Manager Console.

Unfortunately there is no Package Manager Console in Visual Studio for Mac... so how do you handle things like enable-migrations, add-migration or update-database on the Mac?



Solution 1:[1]

This is not currently supported with Visual Studio for Mac.

There is a NuGet extensions addin that adds a PowerShell console to Visual Studio for Mac however the Entity Framework PowerShell commands are unlikely to work since they are typically Visual Studio specific. Also the PowerShell support is limited since it uses Pash, an open source clone of PowerShell, which is not fully implemented.

If you are using Entity Framework 7 (or what they are calling Entity Framework Core) then you should be able to use the commands with the .NET Core command line.

dotnet ef migrations ...

If you are using Entity Framework 6 then you would need to find another way to call the migrations instead of using PowerShell. Entity Framework 6 has PowerShell commands that are specific to Visual Studio. They were ported to SharpDevelop but involved re-writing them to work with that IDE.

Solution 2:[2]

To run EF on Mac just follow the following.

Open a command line, go to the project folder, and run

dotnet restore

If everything is fine, you should be able to run

dotnet ef

After that you can run commands like:

dotnet ef migrations add initial

dotnet ef database update

Solution 3:[3]

This is currently supported on Mac.

First you need to install dotnet-ef

dotnet tool install --global dotnet-ef

To install a specific version of the tool, use the following command:

dotnet tool install --global dotnet-ef --version 3.1.4

Add the "dotnet-ef" tools directory on the PATH environment variable.

export PATH="$PATH:/Users/'your user folder'/.dotnet/tools"

Open a command line, go to the project folder, and run

dotnet restore

If everything is fine, you should be able to run

dotnet ef

After that you can run commands like:

dotnet ef migrations add initial

dotnet ef database update

PS: Your solution should not be executing when the dotnet ef command line is trying to run!!!

For People who are not convinced, here a demo of succeed!!! For People who are not convinced, here a demo of succeed!!!

Solution 4:[4]

If you are using .NET Core (specifically EF Core), you can install the NuGet PowerShell Core Console in Visual Studio for Mac'.

Just follow the instructions described at:

https://lastexitcode.com/blog/2019/05/05/NuGetPowerShellCoreConsoleVisualStudioForMac8-0/

Solution 5:[5]

Mac Users

If you have N-Layer Architecture and multiple projects, make sure you're running command on the right path (possibly under the startup project path)

I was having issues because of a wrong path

dotnet ef database update

Of course you have to install ef first

dotnet tool install --global dotnet-ef --version {VERSION_NUMBER}

then export path

export PATH="$PATH:/Users/firatkeler/.dotnet/tools"

And do not forget to install db locally if your settings are pointing to a local db. Install and try to connect it first, then apply dotnet ef database update command.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Community
Solution 3
Solution 4 Chipo Hamayobe
Solution 5 Ahmet Firat Keler