Solution: Add-Migration Build Failed. Update-Database Failed
Entity Framework

Solved: Add-Migration initial -v Build started Build failed or Update-Database Failed

Add-Migration initial -v Build started Build failed or Update-Database Failed

Solution:

  1. Make sure the solution is building right, clean and rebuild, if any project fails, fix it.
  2. Use dot net tool through command prompt to add the migration it will give you clear information
dotnet ef migrations add MigrationName -v

Now fix the issue, in my case I needed to add reference to Microsoft.EntityFrameworkCore.Design

So I installed Microsoft.EntityFrameworkCore.Tools and it fixed the issue.

if still looking for answers check this post

Happy Coding!

Entity Framework

Solved : context has changed since the database was created. Consider using Code First Migrations to update the database

Solution:

Are you moving changes from Development Environment to staging and you are getting above error, well there is a very quick and simple solution to the problem.

Just got to database and delete this table, and it will solve the issue, given that you already have moved the changes to the required tables etc using SQL compare or any other tool.

_MigrationsHistory

Considerations and Other Solutions:

There is an other approach to automatically move the changes to database by using below code in configuration.cs file in Migrations folder.

AutomaticMigrationsEnabled = true;

Please for the love of God don’t go for drop and recreate database option, as you will lose data when accidentally code is moved to staging or production, code as given below(Warning, You will lose data by using this)

Database.SetInitializer<NameOfDbContext>(new DropCreateDatabaseIfModelChanges<NameOfDbContext>());

Visit Stack Over flow for more discussion.

Development, Entity Framework, Uncategorized

How to force Entity Framework to Always Load Fresh copy of Data from the Database

How to force Entity Framework to Always Load Fresh copy of Data from the Database

Solution:

There are many solution to achieve this result.

The most popular and easiest one is to dispose the existing context object and create new one

entities.Dispose();
entities = new Entities(); // DbContext

but it is not optimal you are disposing whole context which could be very expensive.

Optimal Solution:

Db.Entry(item).Reload(); // Db here means DbContext

this will only load the entity (item) you passed from the database and if you changed the item before reload, after reload the change will be overwritten by the values coming from database.

For more information Please check