Dotnet EF更新不生成数据库

时间:2017-12-26 23:49:13

标签: .net entity-framework .net-core

我按照教程制作了一个dotnet 2 rest api,并希望dotnet cli在dotnet ef更新后生成一个数据库。但它没有发生

我有这个上下文类

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

这就是我在StartUp.cs上调用con字符串的方式

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"));
    });
}

包含con字符串的config.json

{

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

这是我的localdb&gt;的名称。 (的LocalDB)\ MSSQLLocalDB

终端输出

$ 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.

有什么想法吗?

对不起,如果这是一个愚蠢的问题,我是dotnet 2的新手。

1 个答案:

答案 0 :(得分:1)

我会尝试删除迁移文件夹并重新开始。我之前遇到过这个问题,不得不删除ef迁移并重新开始。

1)手动删除您的数据库 - 无论它在哪里(我假设您已对连接进行排序)或清空它,但更容易/更安全的是将它们全部删除 - 如有系统__MigrationHistory表 - 你也需要删除它。

2)删除所有迁移文件 - 在迁移下 - 并命名为数字等 - 全部删除,

3)重建包含迁移(及其余部分)的项目 - 并确保您的项目已设置(配置)以自动构建(有时可能会导致问题 - 但对您来说不太可能) ,

4)再次运行Add-Migration Initial - 然后再运行Update-Database

Post on how to delete and start over a EF migration