Wednesday, December 20, 2017

Entity Framework Core 2 - not recognizing context for Core library

I'm used to having my EF entities in separate class library and having one solution just for this library and a unit-test project. It makes development much faster (quick compilation). After switching to EF Core (2), I ran into issue that migrations won't pick up DbContext and nothing would happen. So I tried running "Get-DbContext", which resulted in nothing - not even a message in the PMC console.
Interestingly enough, exactly the same code was working fine when the project type of the library was "Class Library (.NET Standard)" instead of "Class Library (.NET Core)".
After many experiments I figured out a way to make it work. It seems that it needs an "application" to be present in the solution for the migrations to work - could be web or console.
So, to fix this issue:

  1. Add "Console App (.NET Core)" to your solution
  2. Add EF Core nuget packages to the console app
  3. Reference your class library from the console app
  4. COMPILE!!
  5. Done - now you can generate migrations (don't forget to set your console app as a "StartupProject" either through parameter or in the PMC combo at the top)


No comments: