6

Im following a tutorial to make a dotnet 2 rest api, and expecting the dotnet cli to generate a database after the dotnet ef update. But its not happening

I have this context class

 public class DutchContext : DbContext
 {
     public DutchContext(DbContextOptions<DutchContext> options): base(options)
     {
         public DbSet<Product> Products { get; set; }
         public DbSet<Order> Orders { get; set; }
    }
}

And this is how i call the con string at StartUp.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IMailService, NullMailService>();
    // support for real mail service
    services.AddMvc();
    services.AddDbContext<DutchContext>(cfg =>
    {
        cfg.UseSqlServer(_config.GetConnectionString("ConnectionString"));
    });
}

And the config.json that holds the con string

{

  "ConnectionStrings": {
    "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=EstudoDotnetDB;Integrated Security=true;MultipleActiveResultSets=true"
  }
}

This is the name of my localdb > (localdb)\MSSQLLocalDB

And the terminal output

$ dotnet ef database update
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\dbeze\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 2.0.1-rtm-125 initialized 'DutchContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (10ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT OBJECT_ID(N'__EFMigrationsHistory');
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT OBJECT_ID(N'__EFMigrationsHistory');
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [MigrationId], [ProductVersion]
      FROM [__EFMigrationsHistory]
      ORDER BY [MigrationId];
info: Microsoft.EntityFrameworkCore.Migrations[20405]
      No migrations were applied. The database is already up to date.
No migrations were applied. The database is already up to date.
Done.

Any ideas?

Sorry if this is a dumb question, I'm new to dotnet 2.

Filburt
  • 17,626
  • 12
  • 64
  • 115

1 Answers1

6

I would try to delete the migrations folders and start over. I've run into this problem before and had to delete the ef migrations and start over.

1) Manually delete your DB - wherever it is (I'm assuming you have your connection sorted), or empty it, but easier/safer is to delete it all together - as there is system __MigrationHistory table - you need that removed too.

2) Remove all migration files - which are under Migrations - and named like numbers etc. - remove them all,

3) Rebuild your project containing migrations (and the rest) - and make sure your project is set up (configuration) to build automatically (that sometimes may cause problems - but not likely for you),

4) Run Add-Migration Initial again - then Update-Database

Post on how to delete and start over a EF migration

dev8989
  • 339
  • 1
  • 3
  • 15
  • The only databases i can see at sql server object explorer are inside System databases folder, and are named "Master,Model,msdb and tempdb" In the tutorial after running EF database update, it should create a db with the name i wrote on the connection string, which doesnt seem to me the case. I tried manually creating a DB and then adding migrations, but it didnt add the tables to the manual DB, then i removed the migrations from the project and im tryng to fix the DB issue – Daniel Bezerra De Menezes Dec 27 '17 at 08:15
  • Nvm...lol, i had the wrong connection, i had to add SQL server and choose one with the name of DESKTOP-vs600, – Daniel Bezerra De Menezes Dec 27 '17 at 09:11